我有一個允許用戶輸入文本的輸入,然後使用PHP將其發送到另一個頁面,並存儲在數據庫中。我做了一些簡單的驗證(檢查輸入是否爲空),並且工作得很好。但是,我發現我可以輸入HTML標記,例如不允許用戶在輸入中輸入HTML標籤
<p>
並且它繞過驗證並混淆輸入。
如何檢查輸入是否包含HTML標記,如果是,則返回錯誤?
我有一個允許用戶輸入文本的輸入,然後使用PHP將其發送到另一個頁面,並存儲在數據庫中。我做了一些簡單的驗證(檢查輸入是否爲空),並且工作得很好。但是,我發現我可以輸入HTML標記,例如不允許用戶在輸入中輸入HTML標籤
<p>
並且它繞過驗證並混淆輸入。
如何檢查輸入是否包含HTML標記,如果是,則返回錯誤?
要檢查試試這個:
if(preg_match('#^<.>.+</.>$#', $your_value)){
echo "NOT GOOD"; // and some error too
}
你可以這樣做:
<input type='text' pattern='[a-zA-Z0-9]+'>
,可以確保只有字母和數字可以去,不會提交如果別的是裏面輸入。
然而,這僅僅是良好的客戶端,並且將只對IE9 +
工作,這也不是用於驗證的最好方法,如果有人知道他們在做什麼。他們所要做的就是進入源代碼來取出pattern
屬性,但對於那些不知道的人來說,這樣可以。
對於PHP,您可以使用strip_tags()
。 Found here
在插入數據庫之前,您可以簡單地使用htmlspecialchars或strip_tags。
您還可以使用mysqli_real_escape_string或PDO::quote爲安全字符串
怎麼樣用strip_tags? – user1844933
使用strip_tags http://www.php.net/strip_tags – Hassan