PHP安全常識(shí)之驗(yàn)證數(shù)據(jù)
在學(xué)習(xí)PHP語言的時(shí)候,我們肯定會(huì)關(guān)注這種語言的安全性問題。那么,今天我們就來為大家介紹保證PHP安全的首要措施——驗(yàn)證數(shù)據(jù)。數(shù)據(jù)的驗(yàn)證是您可能采用的最重要的習(xí)慣。而在提及輸入時(shí),十分簡單:不要相信用戶。
#t#您的用戶可能十分優(yōu)秀,并且大多數(shù)用戶可能完全按照期望來使用應(yīng)用程序。但是,只要提供了輸入的機(jī)會(huì),也就極有可能存在非常糟糕的輸入。作為一名應(yīng)用程序開發(fā)人員,您必須阻止應(yīng)用程序接受錯(cuò)誤的輸入。仔細(xì)考慮用戶輸入的位置及正確值將使您可以構(gòu)建一個(gè)健壯、安全的應(yīng)用程序。
下面列出了適用于各種驗(yàn)證數(shù)據(jù)的一般驗(yàn)證提示:
使用白名單中的值
始終重新驗(yàn)證有限的選項(xiàng)
使用內(nèi)置轉(zhuǎn)義函數(shù)
驗(yàn)證正確的數(shù)據(jù)類型(如數(shù)字)
白名單中的值(White-listed value)是正確的值,與無效的黑名單值(Black-listed value)相對。兩者之間的區(qū)別是,通常在進(jìn)行驗(yàn)證數(shù)據(jù)時(shí),可能值的列表或范圍小于無效值的列表或范圍,其中許多值可能是未知值或意外值。
在保證PHP安全而進(jìn)行驗(yàn)證數(shù)據(jù)時(shí),記住設(shè)計(jì)并驗(yàn)證應(yīng)用程序允許使用的值通常比防止所有未知值更容易。例如,要把字段值限定為所有數(shù)字,需要編寫一個(gè)確保輸入全都是數(shù)字的例程。不要編寫用于搜索非數(shù)字值并在找到非數(shù)字值時(shí)標(biāo)記為無效的例程。