能用就行?PHP不能再果奔了!8條鐵律送給你

引言

哎,想要做到安全,真的很難。

大多數時候還真不知道怎麼下手,而至於安全性所帶來的效果,也總是模糊不清。這也難怪那麼多開發者不重視安全性。

下面提供一個PHP安全最佳實踐的列表,幫助大家釐清一些安全需要注意的點。


能用就行?PHP不能再果奔了!8條鐵律送給你


1 - 篩選並驗證所有數據

無論數據來自何處,無論是配置文件、服務器環境、GET和POST,還是其他任何地方,都不要信任它。

過濾 + 驗證!

可以使用高效可用的庫來實現,比如zend-inputfilter。


2 - 使用參數化數據庫查詢

為了避免SQL注入攻擊,永遠不要用外部數據連接或插入SQL字符串。而是使用參數化查詢和準備好的語句。

這些可以與特定的第三方庫一起使用,也可以使用PDO。


3 - 設置open_basedir

open_basedir指令限制PHP可以從open_basedir目錄向下訪問文件系統的文件。不能訪問該目錄之外的任何文件或目錄。

這樣,如果惡意用戶試圖訪問敏感文件,比如/etc/passwd,訪問將被拒絕。


4 - 檢查您的SSL / TLS配置

通過定期掃描,確保服務器的SSL/TLS配置是最新的和正確配置的,並且沒有使用弱密碼過時的TLS版本、沒有弱密鑰的有效安全證書等。


5 - 使用TLS或公鑰連接到遠程服務

在訪問任何數據庫服務器遠程服務(如Redis、Beanstalkd或Memcached)時,堅持使用TLS或公鑰。

這樣做可以確保只允許經過身份驗證的訪問,並且對請求和響應進行加密,並且不會以明文傳輸數據。


6 - 不要在header中發送敏感信息

默認情況下,PHP將在HTTP header 中設置版本號。一些框架也是這麼做的。


7 - 能寫的儘量都寫上日誌

無論您是否記錄失敗的登錄嘗試、密碼重置或調試信息,都要確保您記錄的是易於使用的成熟包,比如Monolog。


8 - 要有內容安全策略

無論你是隻有一個頁面、靜態網站、大型靜態網站,還是複雜的基於web的應用程序,都要實現內容安全策略。它有助於緩解一系列常見的攻擊,比如XSS。


寫在最後

當應用上規模之後,這些都用的到。別說一直都在開發小應用,小數據量的系統,想要進階,系統安全很考驗開發人員的功底哦。

Happy coding :)


分享到:


相關文章: