PHP八大安全函式解析

葡萄酒不吐葡萄皮發表於2019-02-16

在現代網際網路中,我們經常要 從世界各地的使用者中獲得輸入資料。但是,我們都知道“永遠不能相信那些使用者輸入的資料”。所以在各種的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隱碼攻擊。

  1. 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()函式檢查這個變數的值。

  1. htmlentities()

這個函式對過濾使用者輸入資料非常有用,它可以把字元轉換為 HTML 實體。比如,當使用者輸入字元“<”時,就會被該函式轉化為HTML實體<,因此防止了XSS和SQL隱碼攻擊。

  1. htmlspecialchars()

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

  1. strip_tags()

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

  1. md5()

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

  1. sha1()

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

  1. intval()

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

相關文章