Tag: csrf

从Angular 2向Spring支持的Java应用程序发送POST请求时出现CSRF问题

我有使用Angular 2和基于Java的后端编写的UI,它在Spring Security之上使用OpenID Connect身份validation。 身份validation工作正常,但仅适用于GET请求。 每次在资源上执行POST,PUT或DELETE方法时,我都会收到HTTP 403: { “status”: 403, “message”: “Invalid CSRF Token ‘null’ was found on the request parameter ‘_csrf’ or header ‘X-CSRF-TOKEN’.”, } 我像这样使用HttpClient: http.post( ‘/api/my-resource’, JSON.stringify(myObject), new RequestOptions({ headers: new Headers({‘Content-Type’: ‘application/json’}) }) ) 当我添加withCredentials: true 这里提出的RequestOptions,我仍然得到HTTP 403但是有不同的消息: { “status”: 403, “message”: “Could not verify the provided CSRF token because your […]

Access-Control-Allow-Origin是否足以防止XSRF攻击?

我们正在构建一个带有在JBoss中运行的Java Spring / Hibernate后端的应用程序。 前端是AngularJS。 我们还没有做任何事情来在服务器端设置XSRF令牌。 我们也不(无论如何)要求允许其他域访问我们的Web资源。 我想我会试着看看我们的网站是否容易受到XSRF攻击,所以我建立了一个恶意网络应用程序,使用Angular的$ http.post()发布到我们真正的应用程序url之一。 我登录到真正的应用程序,然后我尝试从恶意应用程序发布。 在浏览器中,我收到了401响应并看到了错误: XMLHttpRequest cannot load http://localhost:8080/user/delete. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:6543’ is therefore not allowed access. The response had HTTP status code 401. 服务器端未设置为在响应上设置Access-Control-Allow-Origin,因此出现上述错误。 所以我的问题是,只是从响应头中省略了Access-Control-Allow-Origin,足以防止XSRF攻击? 有没有办法我仍然可以在我的网站上进行XSRF攻击,即使没有设置Access-Control-Allow-Origin? 如果是这样的话? 我想演示这次攻击。 谢谢。

春季MVC中的CSRF(跨站点请求伪造)保护

我在spring的CSRF(跨站点请求伪造)保护中很少混淆。 不,我有我的jsp和我的控制器和一个Web服务。 我想要做的是在Web服务级别validation令牌,如果令牌匹配,则运行Web服务(在我的情况下执行数据库插入) JSP文件 我也插入了隐藏的标签。 现在我该怎么做才能validation这个令牌。 我在那里迷路了。 在控制器类中,我获取从表单到对象的值,并调用Web ervise来保存数据 @RequestMapping(method = RequestMethod.POST) public String processForm(@ModelAttribute(value = “userForm”) @Valid UserForm userForm, BindingResult result, ModelMap model) { //call the web service }

重命名Spring csrf令牌变量

我的应用程序在另一个门户应用程 两者都是在spring实现的,都使用csrf安全性。 我的需要基本上是改变csrf令牌在会话中的命名方式,因此这两个令牌都可以正常工作而不会发生冲突。 到目前为止我尝试创建另一个令牌存储库并尝试更改安全配置类中的参数名称和会话属性名称。 final HttpSessionCsrfTokenRepository tokenRepository = new HttpSessionCsrfTokenRepository(); tokenRepository.setHeaderName(“TOOLBIZ-CSRF-TOKEN”); tokenRepository.setParameterName(“toolbiz_csfr”); //tokenRepository.setSessionAttributeName(“toolbiz_csrf”); 当我提出请求时,Spring并不太喜欢这个新设置,并且日志会生成以下行: Invalid CSRF token found 我该怎么办? 我错过了什么吗?

使用CSRF登录后如何启用Spring Security POST重定向?

我正在使用带有CSRF的Spring Security 3.2。 我的配置包括: 当用户执行需要身份validation的POST表单提交(带有CSRF令牌)时,他将被重定向到登录页面。 之后,Spring Security会将用户重定向到defaultPage ,而不是提交请求。 我怀疑问题是在登录期间CSRF令牌被重置。 登录后如何获得这样的POST重定向? 更新 :我尝试创建自定义SavedRequestAwareAuthenticationSuccessHandler以重定向到原始POST请求。 但是,我看到原始请求甚至没有保存在requestCache 。

Spring Security CSRF令牌不使用AJAX

我的春季启动应用程序中有一个问题,带有csrf令牌。 我有一个表单,我可以编辑一个人。 一个人可以拥有 现在让我们想象一下这个人有一辆车然后进入并储存它。 下次他想删除这辆车并进入另一辆车。 我创建了这个,以便列出他所有的汽车 – 他可以选择从列表中删除它。 现在我从这些药片开始,并希望使用相应的ID向服务器发送POST。 当我尝试时,我得到403被禁止,我不知道为什么。 如果我从POST更改为GET,那么它可以工作。 我的JavaScript(取自本网站: http : //docs.spring.io/autorepo/docs/spring-security/4.0.0.CI-SNAPSHOT/reference/htmlsingle/#the-csrfmetatags-tag ) var csrfParameter = $(“meta[name=’_csrf_parameter’]”).attr(“content”); var csrfHeader = $(“meta[name=’_csrf_header’]”).attr(“content”); var csrfToken = $(“meta[name=’_csrf’]”).attr(“content”); // using JQuery to send a non-x-www-form-urlencoded request var headers = {}; headers[csrfHeader] = csrfToken; $.ajax({ url: “./delete/car”, type: “GET”, headers: headers, }); $.ajax({ url: “./delete/car”, type: […]

Spring Security:按客户端类型启用/禁用CSRF(浏览器/非浏览器)

Spring doc说 “当您使用CSRF保护时?我们的建议是对普通用户可以由浏览器处理的任何请求使用CSRF保护。如果您只创建非浏览器客户端使用的服务,您可能希望禁用CSRF保护。“ 如果我的服务将被“浏览器”和“非浏览器”客户端(如第三方外部服务)使用,那么Spring安全性是否为某些类型的客户端专门禁用csrf提供了一种方法呢? 参考: http : //docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html