我已經搜索到處知道如何防止html injection.i也提出了兩個問題,在這個網站。但我沒有得到一個令人信服的答案。下面,我給我的腳本,我做了爲了防止mysql,在我的html表單中注入html。幫助需要防止html注入
//sql injection prevention
$name =mysql_real_escape_string($_POST['name']);
$login = mysql_real_escape_string($_POST['login']);
$user = mysql_real_escape_string($_POST['user']);
//striping tags
$user =strip_tags($user);
$login = strip_tags($login);
$name =strip_tags($name);
在此之後我試圖用我的數據庫使用下面的腳本,並把它的名字,登錄,用戶的形式在我的HTML和保存它來檢查我的腳本是如何工作的
<script>
document.location = "http://badurl";
</script>
但是當我將上面的腳本保存在數據庫中,並試圖檢索它以顯示在頁面中時,它轉到了badurl site.i認爲strip_tags不工作,我想知道爲什麼。並且可以請你告訴我,我們怎樣才能把用htmlspecialchars在while循環(如下面的腳本)
while ($row = mysql_fetch_array($query)) {
echo('<big><big><big style="color: rgb(158, 0, 0);">' . $row['name'] . ' </big></big></big><p>');
echo('<big><div style="text-align: justify;">' . $row['login'] . ' </big> </div>');
echo('<div style="text-align: justify;">' . $row['user'] . ' </div>');
在將數據放入數據庫之前,不需要調用'strip_tags'或除'mysql_real_escape_string'之外的任何其他內容。不要破壞數據,因爲如果你做錯了,你永遠無法取回數據。 *當您將其顯示在HTML網頁*中時,您可以使用'htmlspecialchars',如下面Dog窩的答案中所述。 –
謝謝grossman的回覆 – test