2013-11-28 15 views
1

在我的註冊表單中,如果用戶禁用註冊表單的javacript驗證並嘗試插入值<script>alert("hacked")</script>,那麼將此值插入到我的數據庫表中。 你能幫我嗎我該如何保護我的應用程序免受這種類型的問題?是否有任何不允許包含script-tag或html-tag的數據的mysql函數?

謝謝。

+0

嗨Barmar, 不,問題是,如果我刪除javascript驗證,並簡單地插入數據()在數據庫中使用post方法。它去我的datbase表,我不希望這 – vin

回答

0

好吧mysqlREPLACE()這個功能。

但在你的情況下,你可以使用strip_tags這將逃脫所有的html標籤。

$name = strip_tags($_REQUEST['name']); 

如果你不想被插入

echo strip_tags(str_replace(array('"','/','(','*',':','=','^','#',';'),'',$name); 

這任何特殊字符將把所有剩餘的字符串。

更多信息參見Manual

+0

感謝您的答案, 但使用strip_tag只刪除標籤只有不完整的數據。 if $ _REQUEST ['name'] =「」;然後警報(「黑客」);價值去數據庫,我不想要的。 – vin

+1

看到我更新的答案,以避免雙引號和括號等 –

+0

它是好的替代解決方案。但我不想將這種類型的數據插入到我的表中。 :( – vin

3

當您顯示已被用戶提供的數據,你應該使用htmlentities()確保任何HTML標籤得到顯示從字面上看,而不是由瀏覽器渲染。

+0

感謝您的回覆, 向瀏覽器顯示數據是很好的,我只是想停止插入包含腳本標籤或html標籤的類型數據。 – vin

+1

然後你需要在PHP中編寫一個驗證函數,它和Javascript驗證具有相同的功能。有此不一般的答案,因爲它取決於您要允許不同的輸入域的內容。 – Barmar

+0

還好, 所以有其返回布爾值的任何功能,如果數據包含腳本或HTML標籤? – vin

相關問題