php注入的安全防範通過上面的過程,我們可以了解到php注入的原理和手法,當然我們也同樣可以制定出相應該的防範方法:
首先是對伺服器的安全設定,前面的windows伺服器的安全設定我們已經講了,不再重複,這裡主要是php+mysql的安全設定和linux主機的安全設定。對php+mysql注射的防範,首先將magic_quotes_gpc設定為on,display_errors設定為off,如果id型,我們利用intval()函式將其轉換成整數型別,如**:
$id=intval($id);
mysql_query=」select *from example where articieid=』$id』」;或者這樣寫:mysql_query("select * from article where articleid=".intval($id)."")
如果是字元型就用addslashes()過濾一下,然後再過濾」%」和」_」如:
$search=addslashes($search);
$search=str_replace(「_」,」\_」,$search);
$search=str_replace(「%」,」\%」,$search);
當然也可以加php通用防注入**:
/*************************
php通用防注入安全**
說明:判斷傳遞的變數中是否含有非法字元
如$_post、$_get
功能:防注入
**************************/
//要過濾的非法字元
$arrfiltrate=array("'",";","union");
//出錯後要跳轉的url,不填則預設前一頁
$strgourl="";
//是否存在陣列中的值
function funstringexist($strfiltrate,$arrfiltrate)
}return false;
}//合併$_post 和 $_get
}//驗證開始
foreach($arrpostandget as $key=>$value)else
exit;}}
?>
/*************************
儲存為checkpostandget.php
然後在每個php檔案前加include(「checkpostandget.php「);即可
**************************/
另外將管理員使用者名稱和密碼都採取md5加密,這樣就能有效地防止了php的注入。
還有伺服器和mysql也要加強一些安全防範。
對於linux伺服器的安全設定:
加密口令,使用「/usr/sbin/authconfig」工具開啟密碼的shadow功能,對password進行加密。
禁止訪問重要檔案,進入linux命令介面,在提示符下輸入:
#chmod 600 /etc/inetd.conf //改變檔案屬性為600
#chattr +i /etc/inetd.conf //保證檔案屬主為root
#chattr –i /etc/inetd.conf // 對該檔案的改變做限制
禁止任何使用者通過su命令改變為root使用者
在su配置檔案即/etc/pam.d/目錄下的開頭新增下面兩行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_whell.so group=wheel
刪除所有的特殊帳戶
#userdel lp等等 刪除使用者
#groupdel lp等等 刪除組
禁止不使用的suid/sgid程式
#find / -type f \(-perm -04000 - o –perm -02000 \) \-execls –lg {} \;
php SQL注入問題
這次解決sql注入問題,是查詢之前的controller檔案中的sql注入問題,修補漏洞很重要,預防漏洞的產生也同樣重要,在使用sql語句對資料庫進行增刪改查操作的時候,要考慮到sql注入問題的出現。首先了解一下sql注入的步驟 2 使用者自己構造sql語句 3 將sql語句傳送給資料庫管理系統 d...
PHP SQL注入與防禦
1.什麼是sql注入攻擊?2.php通用sql注入攻擊方式 登入介面如下 我們的測試使用者名稱及密碼 admin 123456 首先,我們使用正確的登入使用者名稱及密碼 我們通過sql注入方式跳過密碼驗證登入 通過兩次登入的sql語句,我們可以很清楚的看出差異 step 1 sql select f...
api安全規範
1.api簽名的目的 校驗api呼叫者的身份,是否有權訪問 校驗請求的資料完整性,防止被中間人篡改 防止重放攻擊 2.基本概念 3.基於簽名的認證過程 客戶端 構建http請求,填寫必要的date等http首部資訊 按簽名演算法計算出signature 將accesskey和signature置於 ...