只要我們作好了各類操作就可在基本防止一些朋友利用網(wǎng)站本身的漏洞進(jìn)行網(wǎng)站操作了,很多在php中都有的如XSS用 htmlentities()預(yù)防XSS攻擊還有sql注入可以用mysql_real_escape_string操作等.
PHP包括其他任何網(wǎng)絡(luò)編程語言的安全性,具體表現(xiàn)在本地安全性和遠(yuǎn)程安全性兩個方面,這里我們應(yīng)該養(yǎng)成如下的幾個習(xí)慣確保我們的PHP程序本身是安全的.
1、驗證用戶輸入的任何數(shù)據(jù),保證PHP代碼的安全
這里有一個技巧就是使用白名單,所謂白名單就是說,我們要求用戶的數(shù)據(jù)應(yīng)該是這樣的,例如我們要求用戶的輸入是一個數(shù)字,我們就只檢驗這個值是否是一個數(shù)字就行了,而不必檢驗他到底是什么——其實他有可能是個惡意腳本。
對于這個檢驗我們不能只在客戶端的javascript進(jìn)行,戰(zhàn)地認(rèn)為JS只是為了提高來訪用戶的體驗而產(chǎn)生的,而不是驗證的工具,因為任何一個來訪的用戶都可能會,也有可能無意間就禁用了客戶端腳本的執(zhí)行,從而跳過這層驗證,所以我們必須在PHP的服務(wù)器端程序上檢驗這些數(shù)據(jù).
2、保護(hù)數(shù)據(jù)庫的安全——對即將運(yùn)行于數(shù)據(jù)庫的Sql語句進(jìn)行安全性預(yù)處理。
任何時候都要對執(zhí)行前的Mysql語句,進(jìn)行mysql_real_escape_string操作——該函數(shù)的用法請參考PHP手冊,諸多PHP的數(shù)據(jù)庫抽象層例如ADODB都提供了類似的方法.
3、不要依賴不該依賴的PHP設(shè)置——環(huán)境有時候不可靠
不依賴,magic_quotes_gpc=On,在程序編制的過程,盡量關(guān)閉這個配置選項,任何時候判斷這個選項后再對用戶輸入的數(shù)據(jù)進(jìn)行處理,切記——PHP v6 中將會刪除這個選項。盡量在合適的時候使用addcslashes 系列函數(shù)——請參考手冊
4、驗證數(shù)據(jù)來源,避免遠(yuǎn)程表單提交
不要使用$_SERVER['HTTP_REFERER']這個超級變量來檢查數(shù)據(jù)的來源地址,一個很小的菜鳥黑客都會利用工具來偽造這個變量的數(shù)據(jù),盡可能利用Md5,或者rand等函數(shù)來產(chǎn)生一個令牌,驗證來源的時候,驗證這個令牌是否匹配.
5、保護(hù)會話數(shù)據(jù),特別是Cookies
Cookie是保存在用戶的計算機(jī)上的,保存之后任何用戶都有可能出于某種原因更改他,我們必須對敏感數(shù)據(jù)進(jìn)行加密處理,Md5、sha1都是個不錯的加密方法.
6、利用htmlentities()預(yù)防XSS攻擊
新聞熱點
疑難解答