php中一些安全性防止問題建義

來源:互聯網
上載者:User

PHP包括其他任何網路程式設計語言的安全性,具體表現在本地安全性和遠程安全性兩個方面,這裡我們應該養成如下的幾個習慣確保我們的PHP程式本身是安全的。
1、 驗證使用者輸入的任何資料,保證PHP代碼的安全
這裡有一個技巧就是使用白名單,所謂白名單就是說:我們要求使用者的資料應該是這樣的,例如我們要求使用者的輸入是一個數字,我們就只檢驗這個值是否是一個數字就行了,而不必檢驗他到底是什麼——其實他有可能是個惡意指令碼。

對於這個檢驗我們不能只在用戶端的javascript進行,戰地認為JS只是為了提高來訪使用者的體驗而產生的,而不是驗證的工具。因為任何一個來訪的使用者都可能會,也有可能無意間就禁用了用戶端指令碼的執行,從而跳過這層驗證。所以我們必須在PHP的伺服器端程式上檢驗這些資料。

2、 保護資料庫的安全——對即將運行於資料庫的Sql語句進行安全性預先處理。
任何時候都要對執行前的Mysql語句,進行mysql_real_escape_string操作——該函數的用法請參考PHP手冊。諸多PHP的資料庫抽象層例如ADODB都提供了類似的方法。

3、 不要依賴不該依賴的PHP設定——環境有時候不可靠
不依賴,magic_quotes_gpc=On,在程式編製的過程,盡量關閉這個配置選項,任何時候判斷這個選項後再對使用者輸入的資料進行處理。切記——PHP v6 中將會刪除這個選項。盡量在合適的時候使用addcslashes 系列函數——請參考手冊

4、 驗證資料來源,避免遠端資料表單提交
不要使用$_SERVER['HTTP_REFERER']這個超級變數來檢查資料的來源地址,一個很小的菜鳥駭客都會利用工具來偽造這個變數的資料,儘可能利用Md5,或者rand等函數來產生一個令牌,驗證來源的時候,驗證這個令牌是否匹配。

5、 保護會話資料,特別是Cookies
Cookie是儲存在使用者的電腦上的,儲存之後任何使用者都有可能出於某種原因更改他,我們必須對敏感性資料進行加密處理。Md5、sha1都是個不錯的加密方法。

6、 利用htmlentities()預防XSS攻擊
對使用者可能輸入指令碼語言的地方的資料進行htmlentities()操,將多數可以產生程式錯誤的使用者輸入進行實體化。記住要遵循第一個習慣:在 Web 應用程式的名稱、電子郵件地址、電話號碼和帳單資訊的輸入中用白名單中的值驗證輸入資料。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.