Tag: csrf protection

春季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 }

Struts2令牌拦截器:CSRF保护

我试图通过使用struts令牌拦截器保护我的Web应用程序免受CSRF攻击。 我现在面临的问题是我们的JSP页面对服务器进行了多次调用(当JSP转换为JS时,一个struts令牌被添加到JS.But,在这个JS中有多个Ajax请求。我希望我自己清楚。),因为令牌拦截器只对服务器的第一次请求得到validation。 其他请求将失效,因为struts令牌在每次validation后都会重置。 有没有办法阻止Struts在每次validation时重置令牌? 是否有任何其他解决方案来处理struts拦截器。 我也在看tomcatcsrfprotection模块,我想我最终也会tomcatcsrfprotection同样的问题。 managepage.jsp : var strutsToken = “”; var requestParams = {mainAction: ‘loadGroups’,’struts.token.name’: ‘token’ , token:strutsToken}; Ext.Ajax.request({ url: ‘manageUserAccount.action’, params: Ext.urlEncode(requestParams), disableCaching: true, success: this.actionCallback }); //loading widgets var requestParams = {mainAction: ‘loadusers’,’struts.token.name’: ‘token’ , token:strutsToken}; Ext.Ajax.request({ url: ‘manageUserAccount.action’, params: Ext.urlEncode(requestParams), disableCaching: true, success: this.actionCallback }); Struts.xml : /pages/manageUserAccount.jsp 我刚刚添加了最少的代码,以便更容易理解它。

重命名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 我该怎么办? 我错过了什么吗?

如何在JSF-Spring集成应用程序中启用CSRF保护

我有一个JSF-Spring集成应用程序。 Spring安全性也集成在此应用程序中。 这些是我的应用程序中的版本: JSF 2.2 Spring 4.0.3.RELEASE Spring Security 3.2.4.RELEASE 根据JSF文档 ,JSF2.x [甚至旧版本]中的所有POST请求都将受CSRF保护。 但是我能够通过CSRF攻击来渗透我的应用程序。 我尝试了一个不同的JSF2.2仅[无Spring]示例应用程序,在这种情况下,我可以看到此示例应用程序受CSRF保护。 所以我的理解是,JSF / Spring / Spring安全组合在我的原始应用程序中给出了问题。 遗憾的是,日志文件中没有帮助信息。 我可以试试Spring Security CSRF保护 。 在这种情况下,挑战是我需要在所有POST情况下编辑代码。 我希望启用JSF CSRF保护,以避免此代码更改。 有什么建议吗? 我正在用Pinata进行测试。

选择性使用Spring Security的CSRFfilter

免责声明:我的问题有点类似于这个问题和这个问题 ,但我已经尝试了在这些主题中提出的所有答案,并且已经花了几天时间来解决这个问题。 我在现有的应用程序(JSP,Servlet)中引入了Spring Security 3.2.6,我正在使用Java配置。 我的应用程序将被浏览器和非浏览器客户端使用。 我希望所有对URL的浏览器请求(即/webpages/webVersion/和/webpages/webVersion2/ )都启用CSRF,并且所有其他请求都禁用CSRF。 非浏览器客户端从不访问上述两个URL,而浏览器应用程序也可以访问CSRF禁用的URL。 我尝试了各种选择: 仅在前面提到的URL上启用Spring Security: @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers(“/”,”/resources/****”).permitAll() .antMatchers(“/webpages/webVersion/****”, “/webpages/webVersion2/****”).authenticated() .antMatchers(“/webpages/****”).permitAll() .anyRequest().anonymous() .and() .formLogin().loginPage(“/webpages/webVersion/login/newLogin.jsp”).failureUrl(“/webpages/webVersion/login/newLogin.jsp?error=true”).loginProcessingUrl(“/j_spring_security_check”) .usernameParameter(“username”).passwordParameter(“password”).defaultSuccessUrl(“/webpages/webVersion/login/loginSuccess.jsp”, true).permitAll() .and() .logout().logoutUrl(“/webpages/webVersion/logout.jsp”).permitAll() .and().exceptionHandling().accessDeniedPage(“/webpages/webVersion/404-error-page.jsp”) .and() .csrf(); } 这不起作用,因为我观察到所有URL都启用了CSRF。 尝试使用CSRFProtectionMatcher : .csrf().requireCsrfProtectionMatcher(csrfRequestMatcher); CSRF仅针对预期的URL启用,但是甚至需要在匹配函数内检查/resources/**和/webpages/** URL。 考虑到它将适用于所有请求似乎有点多。 尝试使用另一个版本的configure方法: @Override public void configure(WebSecurity web) throws Exception { web.ignoring().regexMatchers(“.*?/jsp/(?!webVersion|webVersion2).*?”); } 我不确定我是否正确地做了但这并没有产生我想要的结果。 […]

无法使用tomcatvalidation对CSRF令牌的发布请求

我正在开发一个tomcat应用程序。 我正在尝试添加catlina库提供的CSRF身份validation令牌(org.apache.catalina.filters.CsrfPrevention)。 我在web.xml中添加了filter CsrfFilter org.apache.catalina.filters.CsrfPreventionFilter entryPoints /Login CsrfFilter /* 我还更新了login.jsp <form action=" Login 现在当我运行服务器时,登录页面正在渲染。 当我输入用户名和密码时,浏览器使用CSRF_NONCE发送Post请求到Login servlet http:// localhost:9090 / Login?x = true&org.apache.catalina.filters.CSRF_NONCE = 7DE88A93A526E465566864684FEB01C9 。 它具有CSRF_NONCE但仍然响应具有状态403.我已经阅读了许多文档但是找不到任何解决方案来validationpost requet。 我还要说我需要对所有url进行编码,但无法找到我应该怎么做。 我需要为此编写filter吗?