我試圖瞭解XSS攻擊。我知道我應該使用htmlspecialchars(),無論何時向用戶輸入的瀏覽器輸出內容。下面的代碼工作正常。檢測和防止XSS,但允許html格式化
我不明白的是是否需要使用htmlspecialchars()來回顯$ enrollmentno?
<?php
$enrollmentno = (int)$_POST['enrollmentno'];
echo "<div style='border-radius:45px; border-width: 2px; border-style: dashed; border-color: black;'><center><h4><b>$enrollmentno</b></h4></center></div>";
$clink = "http://xyz/$enrollmentno/2013";
echo"<iframe src='$clink' width='1500' height='900' frameBorder='0'></iframe>";
?>
如果我這樣做
$safe = "<div style='border-radius:45px; border-width: 2px; border-style: dashed; border-color: black;'><center><h4><b>$enrollmentno</b></h4></center></div>";
echo htmlspecialchars($safe, ENT_QUOTES);
它不顯示HTML格式正確。
我不確定是否必須在這裏使用HTMLPurifer。 HTMLPurifer保留HTML格式而防止XSS?
更新
echo "<div style='border-radius:45px; border-width: 2px; border-style: dashed; border-color: black;'><center><h4><b>".htmlspecialchars ($enrollmentno)."</b></h4></center></div>";
的伎倆!
爲什麼你不只是清理'$ enrollmentno'中包含值的變量 –
謝謝。這會做什麼? 'echo「
".htmlspecialchars ($enrollmentno)."
Ofcourse!它會做這個工作 –