如果以前有人問過這個問題,我們表示抱歉 - 但在這種情況下,我覺得信息過多,而不是太少。在我看來,每個地方似乎都有矛盾的觀點。 任何澄清將不勝感激。我是否需要在HTML表單中使用htmlspecialchars()用戶輸入來防止XSS?
我有一個用戶註冊表單。我已驗證了不同的字段,但我沒有對數據使用任何清理功能(例如htmlspecialchars),因爲我讀here,最好將其保留到輸出(例如在用戶配置文件中)。我使用PDO準備好的語句來插入我的數據,所以我在那裏安全,據我所知。
但是,通過各種漏洞掃描程序運行我的域名後,他們報告說我的註冊表單非常不安全,並可能成爲XSS攻擊的受害者。我相信的代碼導致,這是如下的片斷:
<input type="text" placeholder="Username" name="user" maxlength="32" value="<?php echo test_input($user); ?>" pattern="^[a-zA-Z0-9]*$" required>
我回聲荷蘭國際集團用戶的輸入回形式的情況下,他們有一個錯誤在另一個領域,以修正後重新提交。因此可能會將有害的腳本回顯到頁面中。
但是,當然這只是來自該特定用戶的輸入?他們可能造成的唯一危害是他們自己?掃描儀是錯誤的還是基本不知道風險?
我有一般字符串,電子郵件地址,URL的字段。我採取了哪些步驟來確保訪問者訪問我的網站的安全?
非常感謝您給我任何幫助/澄清!
編輯
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES | ENT_HTML5, 'UTF-8');
return $data;
}
'test_input()'做了什麼? –
對不起,這是我現在添加的用於防止危險腳本運行的功能。我會將其添加到原始帖子。基本上我的問題是,如果在這個階段是必要的,或者我只是返回用戶輸入的內容?感謝您指出了這一點。 – user2228716
[偉大的逃避現實(或:你需要知道怎麼處理文本中的文本)](http://kunststube.net/escapism/) – deceze