当前位置: 首页 > 知识库问答 >
问题:

Laravel 5 AngularJS上的CSRF令牌

秦斌
2023-03-14

有一个现有项目建立在Laravel 5.2.5和angularjs 1.7.4的基础上。这些页面不是由laravel生成的html页面,只是API。本项目应使用CSRF保护。

Angular文档说,$http服务将自动设置X-XSRF-TOKEN头。

执行XHR请求时,$http服务从cookie中读取令牌(默认情况下为XSRF-token),并将其设置为http头(默认情况下为X-XSRF-token)。

我发现Laravel 5.2文档说它也会检查X-XSRF-TOKEN标头。

Laravel还将CSRF令牌存储在XSRF-TOKEN cookie中。您可以使用cookie值来设置X-XSRF-TOKEN请求标头。一些JavaScript框架,如Angular,会自动为您执行此操作。您不太可能需要手动使用此值。

但我得到的是来自Laravel的TokenMismatchException错误。

我必须使用一些额外的设置来实现CSRF保护吗?

共有1个答案

戚京
2023-03-14

尝试将_令牌字段添加到$http服务的主体中。例子:

// blade template layout without jquery:
<meta name="csrf-token" content="{{ csrf_token() }}">
...
<script>
     window._token = document.querySelector("[name=csrf-token]").getAttribute("content");
</script>

// service.js
$http.post('/api/v1/user/create', {
    _token: window._token,
    fullname: 'foo',
    ...
});
 类似资料:
  • 我在Spring5(Boot2)RESTful web服务中配置了CSRF保护,因为我希望防止CSRF攻击(我使用cookie进行身份验证和授权)。在每个请求中,我都会得到一个新的cookie。我通过标头发回的cookie的值。 我注意到、和方法需要此标记的值(在标头中)才能正常工作,但是方法没有标头也可以正常工作。 这种行为是故意的,因为方法不应该改变状态,还是我做错了什么?

  • 配置Spring Security 3.2后,csrf。令牌未绑定到请求或会话对象。 这是Spring Security配置: login.jsp文件 它呈现下一个html: 结果是403 HTTP状态: 在一些调试之后更新,请求对象以良好的形式发出DelegatingFilterProxy,但在CoyoteAdapter的469行中,它执行请求。回收();这会删除所有属性。。。 我使用JDK 1

  • 本页描述了解释CSRF攻击的用例(16.1): https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html 但是,如果用户确实登录了银行的网站,那么邪恶的网站难道不可能发出GET请求以获取新的CSRF令牌,并在根本不需要用户的情况下撰写帖子吗? 答案必须是否定的,否则CSRF令牌将毫无用处,但我

  • 问题内容: 我有使用mod_wsgi在apache服务器上运行的django,以及由apache(而不是django)直接提供服务的angularjs应用。我想对django服务器进行POST调用(运行rest_framework),但csrf令牌存在问题。 是否可以通过某种方式从服务器设置令牌而不将其作为模板的一部分放置(因为这些页面没有经过django)? 我希望能够通过GET请求以cooki

  • 我使用, Spring Framework 4.0.0版本(GA) Spring Security 3.2.0版本(GA) 支柱2.3.16 其中,我使用内置安全令牌来防范CSRF攻击。 这是一个多部分请求,其中CSRF令牌对Spring security不可用,除非正确配置了多部分过滤器和多部分解析器,以便Spring处理多部分请求。 web中的MultipartFilter。xml的配置如下所

  • 我正在使用Symfony2。0和FOSUserBundle,并希望在我的登录表单上禁用csrf令牌。 我已经禁用了csrf保护全球在我的网站在我的config.yml: 这工作得很好,没有csrf字段添加到我的表单中。但是,这不适用于登录表单。仅在此表单上,如果我没有将令牌包含在表单中,则会出现“无效的CSRF令牌”错误: 如何在登录表单上禁用CSRF令牌?