2014-02-06 163 views
2

我有一個允許用戶輸入文本的輸入,然後使用PHP將其發送到另一個頁面,並存儲在數據庫中。我做了一些簡單的驗證(檢查輸入是否爲空),並且工作得很好。但是,我發現我可以輸入HTML標記,例如不允許用戶在輸入中輸入HTML標籤

<p> 

並且它繞過驗證並混淆輸入。

如何檢查輸入是否包含HTML標記,如果是,則返回錯誤?

+3

怎麼樣用strip_tags? – user1844933

+2

使用strip_tags http://www.php.net/strip_tags – Hassan

回答

2

要檢查試試這個:

if(preg_match('#^<.>.+</.>$#', $your_value)){ 
    echo "NOT GOOD"; // and some error too 
} 
3

你可以這樣做:

<input type='text' pattern='[a-zA-Z0-9]+'> 

,可以確保只有字母和數字可以去,不會提交如果別的是裏面輸入。

然而,這僅僅是良好的客戶端,並且將只對IE9 +

工作,這也不是用於驗證的最好方法,如果有人知道他們在做什麼。他們所要做的就是進入源代碼來取出pattern屬性,但對於那些不知道的人來說,這樣可以。

對於PHP,您可以使用strip_tags()Found here

+0

注意這是相對較新的功能,並且在IE9中不支持。另外,不需要使用自閉句法(/>) – Spork

+0

這可以很容易地被客戶端繞過! –

+0

我在@unknown中添加了一個php位,現在我將添加警告 – Albzi