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