PHP安全之簡介和總則
PHP 作為一種強大的語言,無論是以模塊還是 CGI 的方式安裝,它的解釋器都可以在服務器上訪問文件、運行命令以及創建網絡連接等。這些功能也許會給服務器添加很多不安全因素,但是只要正確地安裝和配置 PHP,以及編寫安全的代碼,那么 PHP 相對于 Perl 和 C 來說,是能創建出更安全的 CGI 程序的。而且,也可以在可用性和安全性之間找到一個很好的平衡點。
PHP 可能會被用在很多不同的方面,因此,PHP 內置的選項以方便用戶對其進行配置。雖然眾多的選項可以使 PHP 完成很多工作,但是對這些選項的設定以及對服務器的配置很可能會產生安全問題。
PHP 的選項與其語法一樣,具有很高的靈活性。使用 PHP,可以在只有 shell 用戶權限的環境下創建完善的服務器端程序,或者在被嚴格限制環境下使用它來完成服務器端包含(Server-Side Includes)而無需承但太大的風險。如何建立這樣一種環境,其安全性如何,很大程度上取決于 PHP 的開發者。
本章以一些常規的安全建議作開頭,講述如何在不同的環境下盡可能地提高安全性,以及介紹對于不同安全級別的一些編程原則。
總則絕對安全的系統是不存在的,因此安全業界常用的方法有助于平衡可用性和風險。對用戶提交的每一個變量都進行雙重驗證可能是一個很負責任的行為,但會導致用戶必須花很多時間去填寫一張復雜無比的表格,從而迫使某些用戶嘗試繞過安全機制。
最好的安全機制應該能在不防礙用戶,并且不過多地增加開發難度的情況下做到能滿足需求。實際上,一些安全問題往往會發生在這種過度強化安全機制的系統上。
不要忘記著名的等強原則:一個系統的的強度是由它最薄弱的環節決定的(相當于木桶原理)。如果所有的事務都基于時間、地點、事務種類進行詳細的記錄,而用戶驗證卻只依靠一個 cookie,那么用戶所對應的事務記錄的可信度就被大大剝弱了。
調試代碼的時候一定要記住,就算是一個簡單的頁面也很難對所有可能發生的情況進行檢測:對你不滿的雇員不一定會輸入如你所愿的東西,黑客也有足夠的時間研究你的系統,當然,你的寵物貓也會跳到你的鍵盤上。這就是為什么必須檢查所有的代碼,去發現哪里可以引入不正當的數據,然后對代碼改進、簡化或者增強。
互聯網上充滿了為了成名而破壞你的代碼、攻擊你的網站并輸入不正當數據的人,總之他們會使你的生活充滿樂趣。無論是大網站還是小網站,只要能和互聯網連接,就會成為一個目標。很多黑客程序并不理會網站的大小,只會機械地掃描 IP 地址并找尋受害者。我們希望那個不要是你。
相關文章:
