Contents ...
udn網路城邦
php编程安全指南
2015/09/28 11:14
瀏覽110
迴響0
推薦0
引用0
1、一般

1)lamp系統安全設置

2)php.ini安全設置

3)使用MVC框架


2、數據傳輸

1)在$_GET的$_POST,$_COOKIE,和$_REQUEST中,消毒和驗證之前以編程方式操縱數據中包含的所有數據

2)SQL註入

定義:代碼註入技術,利用一個安全漏洞,在應用程序的數據庫層發生。該漏洞是存在的,當用戶輸入或者不正確的字符串文字轉義字符中嵌入SQL語句或用戶輸入不強類型,從而意外地執行過濾。

預防:mysql_real_escape_string($string)


3)跨站點腳本(XSS)

定義:安全漏洞,通常在Web應用程序的其他用戶瀏覽網頁,它允許惡意web用戶將代碼註入。這樣的例子:包括客戶端腳本(即JavaScript)的。

預防:htmlentities(strip_tags($string))


3、瀏覽器的請求

1)跨站點請求偽造(CSRF)

定義:攻擊通過在授權用戶訪問的頁面中包含鏈接或者腳本的方式工作。例如:一個網站用戶Bob可能正在瀏覽聊天論壇,而同時另一個用戶Alice也在此論壇中,並且後者剛剛發布了一個具有Bob銀行鏈接的圖片消息。設想一下,Alice編寫了一個在Bob的銀行站點上進行取款的form提交的鏈接,並將此鏈接作為圖片tag。如果Bob的銀行在cookie中保存他的授權信息,並且此cookie沒有過期,那麽當Bob的瀏覽器嘗試裝載圖片時將提交這個取款form和他的cookie,這樣在沒經Bob同意的情況下便授權了這次事務。

預防:生成一個獨特的“令牌”,通常當一個瀏覽器會話的開始。通過令牌在所有POST和GET請求。繼POST/ GET行動,檢查存在的會話令牌,然後確認郵寄令牌/ GET存儲在會話中的令牌相同。 (像CakePHP的MVC框架,使得這個比較容易實現整個應用程序的統一。)


4、Sessions

1)殺死一個會話時,銷毀會話數據

當session會話完成後(“註銷”),銷毀其數據,不只是清除cookie,否則惡意用戶能重新恢復cookie和再次使用session。可以將$_SESSION中的所有索引置空

2)以文件形式存儲session在網站的webroot文件或存儲在數據庫

在服務器上保存session的默認路徑可以被劫持的,尤其是在一個共享的主機環境。


5、密碼

1)應用強密碼

需要數字,符號,大寫和小寫字母的密碼

密碼長度應該在12至14個字符

2)加密

至少使用SHA1()哈希加密(不使用md5()),hash()函數提供了一些額外的哈希選擇,包括SHA256。添加一個“特定的應用程序”來加密


6、一般的php.ini配置

1)Disable register_globals

預防: register_globals = Off

2)Disable magic quotes

預防: magic_quotes_gpc = Off

3)Disable error reporting

預防: display_errors = Off

4)Enable error logging and save log file to a directory above web root

預防: log_errors = On;

ignore_repeated_errors = On;

html_errors = Off;

error_log = /path/above/webroot/logs/php_error_log

5)保存session數據到webroot的目錄下

預防: session.save_path = /path/above/webroot/sessions


7、webroot下載的.htaccess文件

1)Disable directory listings site-wide

預防: Options -Indexes


8、重要/敏感文件

1)防止未經授權的訪問/下載

這包括網站管理/成員,部分網站/數據庫配置文件等

2)使用腳本文件作為中介,作為附件

3)不斷更新你的腳本(WordPress的,phpMyAdmin的,等)的密碼。

4)當你正在使用時可以使phpMyAdmin允許訪問,這可防止別人對您的利用"零日漏洞"破壞

“零日漏洞”(zero-day)又叫零時差攻擊,是指被發現後立即被惡意利用的安全漏洞。通俗地講,即安全補丁與瑕疵曝光的同一日內,相關的惡意程序就出現。這種攻擊往往具有很大的突發性與破壞性。


9、文件上傳

1)在數據操作前一定要對$_FILES進行驗證,判斷文件是否已經在 $_FILES 中

2)請註意提供的MIME類型可能欺騙或其導致他方式錯誤

3)所有用戶上傳的文件應移動到網站根目錄以上的目錄

4)不要執行用戶上傳的文件,或者用include require等包含用戶上傳的文件

5)盡量不要設定腳本類型為application/octet-stream,” “application/unknown,” or “plain/text”


10、其他

在webroot下,被網站開發人員創建和使用的“實用工具”文件/程序,如果不打算被網站用戶訪問和使用,那麽在放到外網之前應該將他們全部刪除,降低的網站的安全風險。
全站分類:知識學習 科學百科
自訂分類:不分類
上一則: Oracle完全卸載的具體步驟
下一則: shell腳本入門

限會員,要發表迴響,請先登入