如果以前有人问过这个问题,我们表示抱歉 - 但在这种情况下,我觉得信息过多,而不是太少。在我看来,每个地方似乎都有矛盾的观点。 任何澄清将不胜感激。我是否需要在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