1.非直接執(zhí)行程序請(qǐng)加上
if(!defined(‘IN_DISCUZ’)) {exit(‘Access Denied’);}
2.記得過(guò)濾
比如說(shuō)uid等id需要intval過(guò)濾,避免溢出 ? ? 文字內(nèi)容需要htmlspecialchars過(guò)濾避免內(nèi)容變形(DZ內(nèi)為dhtmlspecialchars)
3.查詢(xún)條件需要寫(xiě)在’和’中間.
這個(gè)是為了避免別人使用查詢(xún)的條件寫(xiě)出溢出內(nèi)容
4.所有寫(xiě)入mysql的變量必須addslashes
DZ內(nèi)為daddslashes,如用DZ無(wú)須再次過(guò)濾,DZ已將所有 POST和 _GET過(guò)濾,并記得在插入時(shí)前后帶上’
這是為了避免破第3步將變量?jī)?nèi)帶’使第3條無(wú)效 ? ? 再需要選擇是否插入某字段時(shí)記得不要直接使用傳遞來(lái)的代碼而是判斷是否選上什么再加上,比如
if($click) {$front = ‘a, b ,c’;$back = “‘$a’, ‘$b’, ‘$c'”;} else {$front = $back = ”;}
然后在下面的插入內(nèi)可以直接加上 front和 back
查詢(xún)也類(lèi)似. ? ? 必須記得如果沒(méi)有將 front和 back為”,這是為了避免讓別人利用了.
5.提交內(nèi)容記得用submitcheck() ? ? 避免被別人利用,比如利用[img]代碼
6.確保所有變量都有定義,防止被別人利用 ? ? DZ一直在改進(jìn),啟用了很多新的變量也放棄了很多舊的變量,希望大家在轉(zhuǎn)換過(guò)程中先了解清楚DZ是否有更改或去除以前的變量. ? ? 比如說(shuō)前段時(shí)間的許愿池 漏洞 就是因?yàn)闆](méi)有定義$discuz_root而被別人利用.
7.extract,eval等函數(shù)需要小心使用 ? ? 不要被別人利用這個(gè)覆蓋已有變量達(dá)到入侵目的
8.寫(xiě)儲(chǔ)存文件的時(shí)候記得過(guò)濾 ? ? 如果你儲(chǔ)存文件的后綴名為PHP或其他可執(zhí)行文件,記得將開(kāi)頭加上
<?PHPexit(‘Access Denied’);?>
9.可上傳附件的插件記得限制類(lèi)型
上傳附件,為了防止他人上傳可執(zhí)行文件,必須檢查后綴名是否含有可執(zhí)行文件后綴名,最好不允許此類(lèi)文件上傳,如需上傳請(qǐng)將文件名改變. ? ? 以下內(nèi)容轉(zhuǎn)自DZ程序的代碼
$attach[‘attachment’] .= preg_replace(“/(php|phtml|php3| jsp |exe|dll| asp |aspx|asa|cgi|fcgi|pl)(\.|$)/i”, “_\\1\\2”,substr($filename, 0, 64).’_’.random(12).’.’.$extension);
10.所有組數(shù)在運(yùn)用前記得寫(xiě)$xxx = array(); ? ? 這個(gè)的原因很簡(jiǎn)單,為了避免被利用(在地址直接加上&xxx[xxx]=abc即可被利用) ? ? 有些插件有可能因?yàn)檫@些原因影響插件安全