我想要做一個註冊頁面,用戶輸入數據到輸入,如果這不符合我的標準我想把他的價值再次在他的輸入框,所以他沒有再寫一遍。顯示什麼用戶輸入,但防止xss
我使用htmlspecialchars來防止xss。
$string_from_user = htmlspecialchars($_POST['string'], ENT_QUOTES, 'UTF-8');
echo '<input type="text" name="string" value="'.$string_from_user.'">';
問題是...比方說,我想進入名:john">
我的輸入框中現在將顯示:john">
和輸入的真正價值在於:john&#34;>
如何使顯示我輸入框顯示:john">
但真正的價值是一個安全的字符串,以防止XSS
解決
似乎在我的代碼上還有另一個FILTER_SANITIZE_STRING,我沒有注意到。 我刪除了,現在一切正常。
/* this caused by problems.
$string = filter_input(INPUT_POST, 'string', FILTER_SANITIZE_STRING);
*/
$string_from_user = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
echo '<input type="text" name="string" value="'.$string_from_user.'">';
嘗試* *剛剛更換'「'和''"。 – h2ooooooo
你有沒有嘗試過'和addslashes()',而不是'htmlspecialchars'?這樣,希望這將是正確的,在輸入框中顯示。 – iCore
看看在HTML淨化器:http://htmlpurifier.org/ –