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

web应用中的CSRF保护

锺离德庸
2023-03-14

我的应用程序具有apache模块提供的CSRF保护。我的应用程序包含几个允许上载一些文件的页面,如下所示:

<form:form method="post" action="my.controller" enctype="multipart/form-data" id="form">

当我们将apache版本从httpd-2.2.3更新到httpd-2.2.15时,所有的工作都很好。

我谷歌了一段时间,发现这个问题可能与我表单中的multipart/form-data参数有关。在这种情况下,表单发送不安全。我还发现Spring可以通过Spring doc的MultipartFilter处理如上所述的内容http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html#csrf-multipartfilter

我是CSRF方面的新手。最好知道是否可以将spring CSRF保护与apache配置结合使用来处理此类情况。

此外,我还找到了一种变通方法,可以对所需的URL禁用CSRF,如

重写规则/url/mycontroller。控制器-[E=CSRF\U忽略:是]

但我不确定它在哪里是正确的。

共有1个答案

孔梓
2023-03-14

以下是我的建议:

如果不需要,请删除enctype,因为某些CSRF库(包括CSRF Guard)不支持多部分/表单数据。

如果您使用隐藏属性设置CSRF令牌,请尝试在操作属性中附加该令牌。以下是此链接:https://code.google.com/p/csrf-filter/

如果仍然面临相同的问题,则可能必须从CSRF检查中排除URL。

 类似资料:
  • 我读到,当使用JWT时,不需要防止CSRF攻击,例如:“由于您不依赖cookie,您不需要防止跨站点请求”。 但是,有一点我不明白:如果我将令牌存储在localStorage中(正如我在同一网站的教程中被告知的那样),那么攻击者如何防止通过读取我的localStorage而不是Cookie来伪造恶意请求呢? 由于它是在服务器端生成的,我不知道如何在客户机请求中使用令牌而不将其存储在客户机的某个地方

  • 我了解CSRF攻击和对它们的保护,我已经阅读了关于它的整个owasp页面,但当涉及到保护REST API时,我有点不知所措。 附言。我想检查referrer头在这里没有帮助,因为referrer将不同于我的服务器域,对吗?

  • CSRF是指针对Web应用程序的跨站点伪造攻击。 CSRF攻击是系统的经过身份验证的用户执行的未授权活动。 因此,许多Web应用程序容易受到这些攻击。 Laravel以下列方式提供CSRF保护 - Laravel包含一个内置的CSRF插件,可为每个活动用户会话生成令牌。 这些令牌验证相关的经过身份验证的用户是否发送了操作或请求。 实现 (Implementation) 本节将详细讨论Laravel

  • 简介 Laravel 可以轻松地保护应用程序免受 跨站点请求伪造 (CSRF) 攻击,跨站点请求伪造是一种恶意攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。 Laravel 会自动为每个活跃用户的会话生成一个 CSRF「令牌」。该令牌用于验证经过身份验证的用户是否是向应用程序发出请求的用户。 无论何时,当您在应用程序中定义HTML表单时,都应该在表单中包含一个隐藏的CSRF标记字段,

  • 我需要在全球ZF1项目上添加CSRF保护。我知道如何添加单个表单,但我已经在项目中创建了很多表单。所以,为每一种形式做这件事是非常乏味和耗时的工作。我需要一个插件或ZF1的任何库,它在每个表单元素的顶部添加一个层,并在每个表单上使用CSRF令牌接收post请求。我们高度赞赏实现这一点的任何逻辑。

  • 有没有办法只使用spring security实现CSRF保护,而不使用身份验证和授权等其他功能? 我尝试了以下配置,但它关闭了spring security的所有功能。想知道是否有一种方法可以配置csrf功能。