1.關閉全域性變數的註冊(register_globals),關閉display_errors,當然如果您希望得到出錯資訊,可以開啟log_errors選項,並在error_log選項中設定出錯日誌檔案的儲存路徑。
2.web伺服器方面,不要以root身份執行web程式,關閉目錄瀏覽,確保web目錄之外沒有提供服務。
3.對於任何可能被汙染的資料都要進行過濾(相關過濾函式 htmlspecialchars,strip_tags,mysql_real_escape_string .),被汙染資料是指所有不能保證合法的資料,例如使用者提交的表單,從郵件伺服器接收的郵件,及其它web應用中傳送過來的xml文件。
4.防止語義url攻擊,對一些敏感資訊的輸出或者操作要對使用者進行驗證,最好重新讓使用者輸入驗證一次密碼。
5.對上傳的檔案進行檢查,包括檔名,大小,以及檔案是否為上傳的檔案,在php.ini中配置最大上傳限制,且拒絕不合法的檔名。
6.對於由使用者輸入且要輸出到客戶端的資料進行轉義(htmlentities),以防止跨站的指令碼攻擊。
7.對於**的配置檔案以及需要包含引用但並不需要直接訪問的指令碼不要放在**根目錄下,只要保證web伺服器對其有讀取許可權即可。
8.對於sql語句中的字串變數進行轉義,密碼不能使用明文存入資料庫,加密的時候不要簡單的md5,最好加一串自定義的隨機字串。
9.對於敏感資訊不要儲存在cookie中,比如使用者的密碼。對於使用者長時間登陸驗證的cookie可以使用不易猜測與發現的第二身份標識,儲存到資料庫中,並且在重新驗證過後更新這個標識。
10.防止出現後門url(後門url指本該通過驗證才能正常訪問的url卻跳過驗證機制直接能訪問得到。)可以使用單一入口,除了靜態檔案所有的請求均通過這個指令碼檔案處理。
11.include和require語句 的路徑引數中最好不要出現由外部傳入的變數或者包含外部資源,否則一定要在include和require語句前對資料進行過濾。類似的檔案系統的函式也如此,永遠不要用被汙染的資料去指向乙個檔名,要堅持過濾輸入。
12.避免在指令碼中使用系統命令函式,如果要用,避免使用輸入的資料來構造命令,如果非要使用輸入引數就一定要過濾和轉義資料。
13.設定合理的流程防止暴力猜解密碼,比如驗證碼,輸錯密碼後間隔一段時間才能登陸等等。
PHP安全防範
php 安全和xss,sql注入等對於各類 的安全非常中用,尤其是ugc user generated content 論壇和電子商務 常常是xss和sql注入的重災區。這裡簡單介紹一些基本程式設計要點,相對系統安全來說,php 安全防範更多要求程式設計人員對使用者輸入的各種引數能更細心.建議安裝s...
PHP安全 過濾
我們在開發應用時,一般有個約定 不要信任任何來自不受自己控制的資料來源中的資料。例如以下這些外部源 所有這些外部源都可能是攻擊媒介,可能會 有意或無意 把惡意資料注入php指令碼。編寫接收使用者輸入然後渲染輸出的php指令碼很容易,可是要安全實現的話,需要下一番功夫。我這裡以陳咬金的三板斧為引子,給...
HTTP攻擊與防範 PHP安全配置
1.了解php攻擊帶來的危險性。2.掌握php攻擊的原理與方法 3.掌握防範攻擊的方法 由於 伺服器是以單一系統使用者的模式在執行,因此這個系統的使用者賬號必須能夠讀取每個使用者的文件。這表示在 伺服器上執行的任何 文件都能夠訪問每個使用者的文件。php的安全模式在多使用者的系統上設定一些限制選項來...