php八大安全函數解析

伊谢尔伦
發布: 2016-11-24 14:29:25
原創
1151 人瀏覽過

在現代網路中,我們常常要 從世界各地的使用者中取得輸入資料。但是,我們都知道「永遠不能相信那些使用者輸入的資料」。所以在各種的Web開發語言中,都會提供保證使用者輸入資料安全的函數。在PHP中,有些非常有用且方便的函數,它們可以幫助你的網站防止像SQL注入攻擊,XSS攻擊等問題。當然在PHP程式碼編寫中IDE(如:PhpStorm 、Zend Studio )會有函數的高亮顯示,來確保開發人員的使用,也有人使用程式碼混淆工具來保護這些函數或程式碼(如:Zend Guard),這些手段都是用來確保PHP函數的使用和安全的。今天我們主要來看看這些函數到底是怎麼定義與工作的。

1. mysql_real_escape_string()

這個函數對於在PHP中防止SQL注入攻擊很有幫助,它對特殊的字符,像單引號和雙引號,加上了“反斜杠”,確保用戶的輸入在用它去查詢以前已經是安全的了。但你要注意你是在連接資料庫的情況下使用這個函數。

但現在mysql_real_escape_string()這個函數基本上不用了,所有新的應用開發都應該使用像PDO這樣的函式庫對資料庫進行操作,也就是說,我們可以使用現成的語句來防止SQL注入攻擊。

2. addslashes()

這個函數和上面的mysql_real_escape_string()很像。但要注意當設定檔php.ini中的magic_quotes_gpc 的值為「on」時,不要使用這個函數。預設情況下, magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 資料 自動執行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致 雙層轉義。你可以透過PHP中get_magic_quotes_gpc()函數檢查這個變數的值。

3. htmlentities()

這個函數對過濾使用者輸入資料非常有用,它可以把字元轉換為 HTML 實體。例如,當使用者輸入字元「

4. htmlspecialchars()

HTML中的一些字符有著特殊的含義,如果要體現這樣的含義,就要被轉換為HTML實體,這個函數會返回轉換後的字符串,比如,'&'amp會轉為'&'。

5. strip_tags()

這個函數可以去除字串中所有的HTML,JavaScript和PHP標籤,當然你也可以透過設定函數的第二個參數,讓一些特定的標籤出現。

6. md5()

一些開發者儲存的密碼非常簡單,這從安全的角度上看是不好的,md5()函數可以產生給定字串的32個字元的md5雜湊,而且這個過程不可逆,即你不能從md5()的結果得到原始字串。

7. sha1()

這個函數和上面的md5()相似,但是它使用了不同的演算法,產生的是40個字元的SHA-1雜湊(md5產生的是32個字元的雜湊)。

8. intval()

不要笑,我知道這不是一個和安全相關的函數,它是在將變數轉成整數型別。但是,你可以用這個函數讓你的PHP程式碼更安全,特別是當你在解析id,年齡這樣的資料時。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板