我对 CSRF 攻击一无所知,但我知道在 Laravel 中我们应该以以下形式包含一个隐藏的 CSRF 令牌字段:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
我们应该使用 method="GET" 将其包含在表单中吗?
<form method="GET" action="/search">
{{ csrf_field() }}
...
</form>
例如,我有一个方法为“GET”的搜索输入(表单) - 因此所有内容都将在 URL 中可见,包括 CSRF 令牌...这对我来说根本不是问题,但我只是不确定将其放在“GET”形式中有意义吗?
嗯,您不需要使用 Form Get Request 添加 CSRF 令牌。跨站点请求伪造 (CSRF) 是一种恶意利用,代表经过身份验证的用户执行未经授权的命令。
您可以通过这里
了解基本详细信息实际上,CSRF 在 GET 和 POST 中都可以实现。
示例:
<img src="https://somesite.com/adduser.php?username=test&password=test&role=admin">
如果您有一个使用 GET 的不安全函数,那么您还可以通过简单地将其放入图像中来伪造对它的请求。
这就是为什么除了请求本身中的 CSRF 令牌之外,它通常被认为是在 cookie 甚至标头中结合实现: