在我的php页面(register.php)
中有一个表单,我想检查它是否容易受到CSRF的影响(正如我所期望的那样):
<form method="post" name="registration">
<label>Nome</label><br>
<input name="nome" type="text" autofocus required="required" placeholder="Nome">
<input name="cognome" type="text" required="required" placeholder="Cognome"><br>
<label>Azienda</label><br>
<input name="azienda" type="text" required="required" placeholder="Azienda"><br>
<input name="submit" type="submit" value="Registrami">
</form>
要测试我从浏览器访问的漏洞 我希望浏览器填写表单的字段,但这不会发生。 你能澄清一下原因吗?http://localhost/myfolder/register.php?nome=MyName&cognome=MySurname&azienda=University
答案 0 :(得分:2)
浏览器仅填充包含自动填充数据的表单字段。
对于从URL到表单的数据,服务器必须解析URL中的数据并使用它来填充from字段。
e.g。
value="<?php echo htmlspecialchars($_GET['nome']); ?>"
您的代码不这样做的事实并不意味着表单不容易受到CSRF的攻击。</ p>
CSRF攻击完全替换表单(通常使用隐形表单,预先填充恶意数据并使用JavaScript提交并托管在不同的网站上(因此&#34;跨站点&#34;)。 CSRF攻击不是将数据放入表单,而是放入提交给的表单中。
攻击登记表很少有任何意义。更可能的目标是评论表格(因此,站点A上已经注册和登录的用户将用于提交站点B所有者编写的评论)。然后,将使用站点A上的用户帐户创建站点B的垃圾邮件。