国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Ecshop、Discuz!等開(kāi)源產(chǎn)品的局限

2019-11-14 14:49:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

記得今年年初,我初次接觸Discuz!和Ecshop時(shí),一陣陣地驚嘆:成熟度這么高的產(chǎn)品,居然是免費(fèi)的。我們這些搞傳統(tǒng)軟件開(kāi)發(fā)的要怎么活?另外也奇怪,做這些產(chǎn)品的公司,他們要怎么活?

我公司的網(wǎng)站,原型正好是用Ecshop和Discuz!,到開(kāi)發(fā)方移交給我們后,我們做二次開(kāi)發(fā),深入了解了其代碼,早期的疑惑才有了答案。

可以說(shuō),這些產(chǎn)品,都無(wú)法支持真正嚴(yán)肅的應(yīng)用環(huán)境。

1)所有的數(shù)據(jù)庫(kù)訪問(wèn)都不用MySQLi連接,因此無(wú)法用PRepared statement,而全部用拼接方式。

這些系統(tǒng),對(duì)數(shù)據(jù)庫(kù)(主要都是mysql)的訪問(wèn),全部采用sql拼接方式。舉一個(gè)Ecshop的例子:

   $w_openid = $db -> getOne("SELECT `wxid` FROM `wxch_user` WHERE `wxid` = '$openid'");

或類(lèi)似

   $wxch_user_sql = "INSERT INTO `$thistable` ( `user_name`,`passWord`,`field3`,`field4`) VALUES ('$variable1','$variable2','value3','value4')";   $db -> query($wxch_user_sql);

 

這種語(yǔ)句,偶爾出現(xiàn)倒也可以理解,如果所有的地方都是這樣(正如Ecshop),則應(yīng)該出于對(duì)數(shù)據(jù)庫(kù)只有入門(mén)水平的人手里。因?yàn)樗耆珱](méi)有使用prepared statement的概念。

所以,這種系統(tǒng)幾個(gè)人用應(yīng)該是快如閃電,并發(fā)量一大,后臺(tái)數(shù)據(jù)庫(kù)可能被攪成一鍋粥了。

正確的連接數(shù)據(jù)庫(kù)的方法應(yīng)該是:

 $mysqli = new mysqli("server", "username", "password", "database_name");

而不是

$conn = mysql_connect('server','username','password') or die ("數(shù)據(jù)連接錯(cuò)誤!!!");

 正確的sql語(yǔ)句應(yīng)該是:

$stmt = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");$stmt->bind_param("s", $safe_variable);$stmt->execute();

而不是前面那樣。

 

2)系統(tǒng)安全性極差

因?yàn)椴挥胮repared statement,只要編程人員不注意,sql injection可以說(shuō)到處都有可能。但看看他們的代碼,可以說(shuō)壓根不注意。因?yàn)檫@些系統(tǒng),對(duì)用戶輸入幾乎不用轉(zhuǎn)義。

對(duì)于已經(jīng)很爛的代碼,正確的用法是應(yīng)該有第二行:

$unsafe_variable = $_POST["user-input"];$safe_variable = mysql_real_escape_string($unsafe_variable);mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");

但在這些系統(tǒng)里,上面的第二行很少看到。

這樣造成的問(wèn)題就是,針對(duì)這些系統(tǒng)的機(jī)器人極多。基本上你的論壇上線不久很快就被機(jī)器人發(fā)的水貼、廣告貼盯上了。

 

本人對(duì)這些系統(tǒng)研究還很膚淺,不過(guò)看到這兩條,就已經(jīng)明白,這種系統(tǒng)是供學(xué)習(xí)用的。開(kāi)發(fā)這些產(chǎn)品的公司,他們的水平很高,不過(guò)高質(zhì)量的代碼應(yīng)該是用在了商業(yè)性收費(fèi)的產(chǎn)品上。大家別以為可以撿到便宜。

 

轉(zhuǎn)載請(qǐng)注明出處:VEVb上的海邊的駱駝博客。原博文地址:http://www.survivalescaperooms.com/yingjiang/p/4750408.html 

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 通榆县| 天等县| 龙泉市| 清镇市| 镇远县| 虎林市| 祁连县| 长汀县| 通化市| 吉水县| 临武县| 保靖县| 南城县| 兴城市| 出国| 瑞丽市| 郁南县| 正阳县| 凉城县| 巴里| 桃园县| 波密县| 霍林郭勒市| 惠安县| 霍林郭勒市| 丰原市| 海盐县| 福贡县| 深水埗区| 泗水县| 威远县| 石嘴山市| 建瓯市| 漠河县| 贡山| 布尔津县| 吉林市| 洛南县| 荆门市| 哈巴河县| 三门峡市|