mod_security:允许没有请求正文的 POST 请求的规则

2023-12-01

我安装了 Apache 2.4 和 mod_security 2.9.1,它正在工作,有一些非常基本的规则。

我正在尝试发出一个包含一些标头信息的 POST 请求,但请求正文中没有任何内容(该请求是发送给受 mod_security 保护的 API 端点,并且该端点需要一个没有请求正文的 POST) 。不需要正文的 POST 是有效的,如下所示:PUT 和 POST 请求是否需要/期望有请求正文?

mod_security 正在阻止请求,因为它似乎无法解析/格式化正文(可能是因为它不存在)。

我如何修改规则以允许在没有正文的情况下进行 POST,但如果正文确实存在,则可以正常工作。

正在触发的具体规则是:

SecRule REQBODY_ERROR "!@eq 0" \
"id:'200002', phase:2,t:none,log,deny,status:415,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2"

错误是:

[Fri Jul 08 10:32:32.901230 2016] [:error] [pid 7697] [client 10.0.2.2:57442] [client 10.0.2.2] ModSecurity: JSON parser error: parse error: premature EOF\n [hostname "example.com"] [uri "/api/v1/logout"] [unique_id "V377qH8AAQEAAB4RU6cAAAAD"]

[Fri Jul 08 10:32:32.901555 2016] [:error] [pid 7697] [client 10.0.2.2:57442] [client 10.0.2.2] ModSecurity: Access denied with code 415 (phase 2). Match of "eq 0" against "REQBODY_ERROR" required. [file "/etc/modsecurity/modsecurity.conf"] [line "61"] [id "200002"] [msg "Failed to parse request body."] [data "JSON parser error: parse error: premature EOF\\x0a"] [severity "CRITICAL"] [hostname "example.com"] [uri "/api/v1/logout"] [unique_id "V377qH8AAQEAAB4RU6cAAAAD"]

或者,我应该干脆不发送Content-TypeHTTP 标头,以便让 mod_security 解析正文(尽管我更愿意强制所有 POST 请求始终具有已定义的Content-Type)?

我已经总结了完整的要点修改安全配置文件正在使用(这是一个基本示例,有两个用于过滤内容类型的额外规则)。


您可以禁用正文长度为零的请求的正文访问:

SecRule REQUEST_BODY_LENGTH "@eq 0" "id:12345,phase:1,nolog,ctl:requestBodyAccess=off"

或者,如果您只想在某个 URL 上执行此操作,则使用如下链接规则:

SecRule REQUEST_URI /my/weird/api "phase:1,id:12346,nolog,chain"
   SecRule REQUEST_BODY_LENGTH "@eq 0" "ctl:requestBodyAccess=off"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mod_security:允许没有请求正文的 POST 请求的规则 的相关文章

  • Amazon EC2 - Apache 服务器重启问题

    当我运行这个命令时 sudo etc init d httpd restart 它给出以下错误 停止 httpd 失败 启动 httpd 98 地址已在使用中 make sock 无法绑定到地址 80 98 地址已在使用 make sock
  • antisamy 解析器强制关闭标签

    我使用 Antisamy 来验证 HTML 我的政策允许 iframe 例如 YouTube 视频 问题是 如果标签为空 像这样 清洗后会是这样的 但它应该有正常的结束标签 这会破坏之后页面上的所有内容 我已经将指令设置为使用大部分 HTM
  • 如何将现场 prestashop 站点移至本地主机?

    我在将 PS 1 7 从服务器域传输到本地主机时遇到问题 我已按照 Prestashop 文档中的文件传输的所有步骤进行操作 我执行此步骤 1 将所有 prestashop 文件从服务器下载到我的 mac 并将其放入 mamp htdocs
  • JSON 响应周围的注释块

    我注意到一些 Web 应用程序返回 AJAX 响应 并在注释块中嵌入 JSON 数据 例如 这是一个示例响应 firstName John lastName Smith address streetAddress 21 2nd Street
  • 使用链接进行电子邮件验证是一个坏主意

    在我的注册过程中 用户注册后 他们会收到通过电子邮件发送的验证链接 如果他们单击该链接 那么他们的帐户才会得到验证 但这种验证方法对于机器人来说是不是太容易了 我认为电子邮件可以由机器人创建 但可以肯定的是 如果验证只是单击链接 那么它也可
  • 配置Apache将SSL客户端证书发送到后端服务器

    我想配置 Apache 以便它接收客户端证书 并将其传递到另一台服务器 我在用着 Windows 上的 Apache 2 0 65 后端服务器是基于 apache 的解决方案 IBM HTTP Server 我尝试了这个配置
  • openNLP 与 Solr 集成时出现异常

    我正在尝试将 openNLP 与 Solr 6 1 0 集成 我配置了架构和 solrconfig 文件 详细信息请参见 wiki 链接 https wiki apache org solr OpenNLP https wiki apach
  • 信任所有将文件发送到 https Web 服务的 java 类

    我需要编写自己的类来告诉 mule 与服务 wsdl 的 https 连接已验证 我的 mule 项目已经接近完成 但最后一块丢失了 在特定的 url 发送文件 我想要实现的目标 建立连接并将 xml 发送到目标 url 读取 xml 格式
  • 在 Ubuntu 11 上的 Apache 2 上使用 virtualenv 的多个 Django 应用程序

    我已经使用以下命令成功设置了一个 Django 应用程序virtualenv在 Ubuntu 和 Apache 2 上 使用WSGIPythonHome指令指向我的virtualenv地点 现在我需要创建一个单独的 Django 应用程序
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 上传的白名单或黑名单文件扩展名?

    我正在制作一个新闻通讯编辑器 它将允许文件上传 新闻通讯的发件人可以将文件上传到将在电子邮件中链接到的服务器 该站点的设置使得只有 do URI 实际由 servlet 执行 处理 因此不会有太大的安全风险 但有人告诉我将 jsp php
  • 在 Spring Security SAML 身份验证请求中配置 POST ProtocolBinding

    Spring Security SAML 坚持在 SAML 身份验证请求中请求 Artifact 绑定 ProtocolBinding 属性
  • 请求标头与响应标头

    我正在尝试将图像缓存在网站上 该图像由 PHP 提供服务 其中我使用适当的值设置缓存控制的响应标头 但这不是缓存图像 我认为这可能与具有无缓存缓存控制的请求标头有关 标题如下 响应头 Access Control Allow Origin
  • Codeigniter - 检查用户是否已登录并存在(它是真实用户)

    我正在尝试在用户登录我的网站时为他们设置会话数据 因此 如果用户存在于数据库中 我将设置一个会话数据 例如 this gt session gt set userdata user exists 1 现在 每次我想检查用户是否存在并已登录时
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • 用于保护网站安全(使用 SSL)时,数字证书如何工作?

    请帮助我了解整个过程是如何进行的 据我了解 Web 浏览器包含 verisign Entrust Comodo 等证书颁发机构 CA 的根证书 但是当用户访问安全页面时到底会发生什么 Web 浏览器是否向 CA 服务器发送请求来验证证书 还
  • 无法使用前导 ../ 在顶级目录之上退出

    我有一个 asp net 网站 我们有管理区域 其中的登录页面仅供管理员使用 并且所有网站都允许所有人使用 当我收到此错误时 我需要询问如何为其定义正确的安全配置 Cannot use a leading to exit above the
  • Amazon Web Services:设置 S3 策略以允许 putObject 和 getObject 但拒绝 listBucket

    我在 Amazon S3 上使用 getObject 和 putObject 请求 并在创建访问存储桶的策略时发现 如果我不允许 listBucket 则会收到 访问被拒绝 错误 这样做的问题是 listBucket 意味着用户可以列出存储
  • 设置 Silex Bootstrap 时出现 Apache 错误:无法检查 htaccess 文件

    我正在尝试使用 Silex Bootstrap 建立一个网站 我已将它与其他 Web 项目一起放在我的文件夹中 并更改了 Apache 配置中的 DocumentRoot

随机推荐

  • iOS 10 collectionView:prefetchItemsAt 未调用

    我正在尝试新的collectionView prefetchItemsAt and collectionView cancelPrefetchingForItemsAt的方法UICollectionViewDataSourcePrefetc
  • 当 Collection 数据源更新时更新 ListView

    我有 ListView 我将其绑定到 Dictionary 集合 但是新的新项目添加到集合中 列表视图没有更新 在 WPF 中如何实现这一点 WPF 绑定双方都应该支持INotifyCollectionChanged接口以通知集合更改 词典
  • opencv-tkinter 集成中视频闪烁

    我正在尝试通过将 opencv 组件集成到程序中 在 Windows 8 上的 Python 3 6 4 64 位中使用 tkinter 构建 GUI 我可以播放视频 但出现明显的闪烁 也就是说 与本机 tkinter 背景颜色相同的屏幕每
  • 使用 $.ajax 调用服务器端函数

    最终 我想通过单击按钮将值发送到服务器并查询我的数据库 目前 我在使用 jquery ajax 调用服务器端的函数时遇到问题 这是我的代码
  • PDO fetchObject() 在 fetchall() 之后。返回错误

    我是 PHP 新手 我正在尝试以表格的形式显示员工的详细信息 但while row result gt fetchObject 部分没有执行 因为 result gt fetchObject 返回 false 有什么关系吗 rows res
  • Python:删除除一个for循环之外的所有变量而不受到污染

    reset reset f and reset selective a reset selective f a 是 Matlab 命令 清除所有 的有用 Python 替代品 其中 f 表示 强制而不要求确认 selective 可以与 w
  • Python 3.5 ImportError:动态模块未定义模块导出函数(PyInit_cv2)

    这就是我尝试将 cv2 导入 python3 5 IDLE 时得到的结果 我正在使用 OpenCV 3 1 0 Python3 5 2 Ubuntu 16 04 我尝试了很多安装方法 但没有人解决我的问题 我在终端上进行了导入 但它也停止了
  • 我想捕获所有没有特定标签的标签

    我想捕获我可以使用的所有名为 STRONG 的标签
  • 在响铃期间更改响铃音量

    我想在响铃时更改响铃音量 下面的代码在响铃期间设置它 在系统设置中更改 但它不会在实际响铃时生效 只有下一个响铃呼叫才会使用新值 我可以强制此更改使其立即生效吗 AudioManager audio AudioManager context
  • 在 Java 中通过一次调用(如 JSON.stringify)打印整个结构?

    如何在Java中打印任何类实例 类似于 Javascript 中的 JSON stringify 不需要 JSON 任何格式的输出都可以 public class User public String name password publi
  • PHP旋转和合并时的图像质量问题

    当我合并两个图像作为一个背景 另一个作为目标图像时 我正在使用 png 当我旋转目标图像然后合并时 是的 一切都很好 除了旋转图像的边缘变得锯齿形 我的意思是不平滑 如何使用php GD使边缘平滑 我正在使用的代码
  • 如何公开嵌套在 UserControl 中的控件的 DependencyProperty?

    我正在尝试将图像从窗口绑定到用户控件 显示处理程序 内的用户控件 显示 中 显示有一个 DependencyProperty DisplayImage 这类似于this 但他们的回答对我的问题没有帮助 DisplayHandler 还应该具
  • AppFabric 客户端虚拟机问题

    我们有 AppFabric 缓存集群服务器 我可以使用我的开发计算机作为客户端来使用它 为了模拟不同的Web服务器访问缓存集群服务器 我创建了VMWare虚拟机并安装了Visual Studio 2010和我的Web应用程序 从虚拟机作为客
  • 我可以从 Tomcat 上下文设置 JDBC 隔离级别吗?

    我有一个在 Tomcat 6 中运行的 Web 应用程序 并且我已设法将其配置为使用内置 DBCP 连接池 并且一切都运行良好 但我怀疑它在数据库上的错误隔离级别中运行 我希望它以未提交读的方式运行 但我认为它以已提交读的方式运行 并且不知
  • GtkWindow 一次只能包含一个小部件

    我正在使用此代码来检索并显示来自网络的图像 class Display object def init self self window gtk Window gtk WINDOW TOPLEVEL self window connect
  • 当mapoverlay可见时隐藏mapview ios7

    当 iOS7 中的地图视图顶部有覆盖层时 如何隐藏地图视图 这段代码曾经在 iOS6 中工作 但是当我将我的应用程序升级到 iOS7 时 它停止工作 NSArray views self mapView subviews objectAtI
  • 带有页脚的 Recyclerview 无法删除最后一项

    我在用带页脚的回收视图一切正常 但我无法删除最后一项 假设我们现在列表中有 2 个产品 如果用户删除一个产品 那么 1 个产品将保留在列表中recyclerview那么我无法删除剩余的产品 虽然我有一件商品 但它显示 PACK ID nul
  • C#.Net 中使用 IP 地址和端口号的 TCP/IP 客户端套接字程序

    TCP IP 客户端套接字程序 这里我的主要要求是客户端发送消息 服务器接收消息并存储在 C Net 的数据库表中 使用服务器 IP 地址和端口号 您正在谈论一个简单的服务器 客户端程序 你需要做什么 首先创建一个服务器程序并运行 创建客户
  • 检索文件的全名,按日期过滤

    date datetime 05 19 2014 gci Recurse Select Object FullName LastWriteTime Where Object LastWriteTime ToShortDateString g
  • mod_security:允许没有请求正文的 POST 请求的规则

    我安装了 Apache 2 4 和 mod security 2 9 1 它正在工作 有一些非常基本的规则 我正在尝试发出一个包含一些标头信息的 POST 请求 但请求正文中没有任何内容 该请求是发送给受 mod security 保护的