Laravel csrf_field() - 仅适用于方法=“POST”的表单?

问题描述 投票:0回答:2

我对 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”形式中有意义吗?

laravel laravel-5 csrf
2个回答
5
投票

嗯,您不需要使用 Form Get Request 添加 CSRF 令牌。跨站点请求伪造 (CSRF) 是一种恶意利用,代表经过身份验证的用户执行未经授权的命令。

您可以通过这里

了解基本详细信息

0
投票

实际上,CSRF 在 GET 和 POST 中都可以实现。

示例:

<img src="https://somesite.com/adduser.php?username=test&password=test&role=admin">

如果您有一个使用 GET 的不安全函数,那么您还可以通过简单地将其放入图像中来伪造对它的请求。

这就是为什么除了请求本身中的 CSRF 令牌之外,它通常被认为是在 cookie 甚至标头中结合实现:

  • 原产地安全检查
  • 会话 cookie 上的 SameSite 属性设置为“严格”
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.