PHP四大安全策略
一、文件系統(tǒng)安全
php如果具有root權(quán)限,且在腳本中允許用戶刪除文件,那么用戶提交數(shù)據(jù),不進(jìn)行過(guò)濾,就非常有可能刪除系統(tǒng)文件
<?php
// 從用戶目錄中刪除指定的文件
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo "The file has been deleted!";
?>
上面的代碼,假設(shè)用戶提交的$userfile值是 ../etc/,那么/etc目錄就會(huì)被刪除
防范文件系統(tǒng)攻擊,策略如下
只給php有限的權(quán)限
用戶提交上來(lái)的變量要監(jiān)測(cè)和過(guò)濾,不能包含文件路徑等特殊字符
盡量避免使用PHP操作文件(刪除),如果有這方面的需求,那用戶可刪除文件也必須是系統(tǒng)生成的隨機(jī)名稱,不可被用戶控制
二、數(shù)據(jù)庫(kù)安全
數(shù)據(jù)庫(kù)安全主要防范的是sql injection,即sql注入攻擊,提升數(shù)據(jù)庫(kù)安全的策略如下:
不用使用root帳號(hào)或者數(shù)據(jù)庫(kù)所有者帳號(hào)連接數(shù)據(jù)庫(kù),連接數(shù)據(jù)庫(kù)限定連接用戶的ip
使用php的pdo擴(kuò)展,有效防止sql注入,除了安全方面的優(yōu)勢(shì),php的pdo擴(kuò)展在性能方面有有很大優(yōu)勢(shì)
請(qǐng)參看 http://php.net/manual/en/pdo.prepared-statements.php
對(duì)一些敏感信息進(jìn)行加密,常見(jiàn)的比如對(duì)密碼進(jìn)行加密
三、用戶數(shù)據(jù)過(guò)濾
對(duì)用戶數(shù)據(jù)過(guò)濾,可以防范XSS和CSRF攻擊
使用白名單(用戶輸入是固定模式)的方式
比如用戶名只能使用數(shù)字字母,那么可以使用函數(shù)ctype_alnum判斷
對(duì)用戶輸入使用函數(shù) htmlentities或者h(yuǎn)tmlspecialchars進(jìn)行處理,輸入url不允許傳入非http協(xié)議
用戶身份驗(yàn)證使用令牌 token(csrf)
http://htmlpurifier.org/ HTML Purifier 是開源的防范xss攻擊的有效解決方案,
四、其他安全策略
線上環(huán)境關(guān)閉錯(cuò)誤報(bào)告(error_reporting,dislay_erros,可在php.ini中配置error_log路徑,記錄錯(cuò)誤信息,這樣有助于發(fā)現(xiàn)可能的用戶攻擊)
Register Globals,棄用(移除)的特性,不要使用
魔術(shù)引號(hào)特性,不要開啟,在PHP-5.4中已經(jīng)被移除
盡量使用PHP的最新版本,最新版本修復(fù)了已知的很多安全漏洞和bug
代碼中嚴(yán)格遵守上述策略,基本能保證代碼不會(huì)有太多的安全漏洞,能防范常見(jiàn)攻擊。
相關(guān)文章
PHP獲取數(shù)組表示的路徑方法分析【數(shù)組轉(zhuǎn)字符串】
這篇文章主要介紹了PHP獲取數(shù)組表示的路徑,結(jié)合實(shí)例形式對(duì)比分析了數(shù)組轉(zhuǎn)字符串的實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09
PHP開發(fā)工具ZendStudio下Xdebug工具使用說(shuō)明詳解
我使用的是XAMPP的集成開發(fā)平臺(tái)環(huán)境。里面已經(jīng)預(yù)設(shè)了Xdebug的調(diào)試工具,只需要自己改下配置的就可以了2013-11-11
用php實(shí)現(xiàn)讓頁(yè)面只能被百度gogole蜘蛛訪問(wèn)的方法
用php實(shí)現(xiàn)讓頁(yè)面只能被百度gogole蜘蛛訪問(wèn)的方法,需要的朋友可以參考下。2009-12-12
高質(zhì)量PHP代碼的50個(gè)實(shí)用技巧必備(上)
這篇文章主要為大家分享了50個(gè)高質(zhì)量PHP代碼的實(shí)用技巧,大家必備的php實(shí)用代碼,感興趣的小伙伴們可以參考一下2016-01-01
PHP error_log()將錯(cuò)誤信息寫入一個(gè)文件(定義和用法)
PHP error_log()定義和用法,帶有二個(gè)簡(jiǎn)單小例子加函數(shù)解釋2013-10-10
PHP實(shí)現(xiàn)的DES加密解密實(shí)例代碼
這篇文章主要介紹了PHP實(shí)現(xiàn)的DES加密解密方法,結(jié)合完整實(shí)例形式分析了PHP實(shí)現(xiàn)DES加密解密的相關(guān)技巧,需要的朋友可以參考下2016-04-04
PHP實(shí)現(xiàn)word轉(zhuǎn)pdf的兩種方式(有用!)
最近遇到一個(gè)需求,將word文件轉(zhuǎn)換成pdf,輾轉(zhuǎn)了一上午終于搞定了,下面這篇文章主要給大家介紹了關(guān)于PHP實(shí)現(xiàn)word轉(zhuǎn)pdf的兩種方式,需要的朋友可以參考下2022-09-09

