标签: http

为什么 modsecurity 在 POST 请求中需要 Content-Length?

我有一个 RESTful Web 服务,它接受对没有实体主体的资源的 POST 请求,例如空的 POST 请求。默认的 modsecurity 配置要求所有 POST 请求都具有 Content-Length:

# Require Content-Length to be provided with every POST request
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"
Run Code Online (Sandbox Code Playgroud)

modsecurity 控制台将此报告为 PROTOCOL_VIOLATION/EVASION。但是,在阅读HTTP/1.1 RFC 时,我不认为这是真的。允许服务器要求 Content-Length(返回 400 或 411),但我看不到任何内容表明服务器必须(或建议它应该)以这种方式运行。

这可能因浏览器而异,但在没有实体主体的情况下发出 POST 请求的 Flash 客户端不会发送请求标头。当你做'curl -XPOST ...'时也不会卷曲。由于这些原因,并且因为我认为 modsecurity 规则是对 HTTP 规范的误解,我正在考虑在我们的配置中取消对 POST 请求的 Content-Length 标头的要求。

有谁知道是否有特定的漏洞利用此规则来解决?大量的谷歌搜索,我只发现这是库存 modsecurity 配置的一部分。

http mod-security

7
推荐指数
1
解决办法
4645
查看次数

如何在 IIS7 中启用 PUT 和 DELETE

我一直在寻找一段时间,似乎无法找到如何在 IIS7 中启用 PUT 和 DELETE。当我使用这些动词时,我不断收到 404。我玩过请求过滤,这没有影响。我查看了 IIS 日志,我只看到了 404.0.0。有任何想法吗?

更多信息:我正在使用 HttpModule 进行 REST URL 重写。所以处理程序动词不会削减它。

更新:好的 - 所以我想通了。我正在使用一个模块来重写 URL,然后使用一个处理程序来处理。为了让 PUT 和 DELETE 工作,我像往常一样注册了模块,然后显式地注册了 PUT 和 DELETE 动词的处理程序。

iis http iis-7

7
推荐指数
1
解决办法
2万
查看次数

如何使用 .htaccess 始终从 HTTP 重定向到 HTTPS?

有一些类似的问题,我试图从中找出答案,但到目前为止我一直没有成功。请告知我如何始终将 http 重定向到 https(并在此过程中从主机名中删除www.)。还有一个附带说明,最好在主 Apache conf 中执行此操作而不是.htaccess- 但我想这不适用于大多数人。

更新:

我已将此代码段添加到一个VirtualHost部分:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

...但它在我访问时没有效果http://www.domain(它应该重定向到https://domain

更新 2:

它没有效果,因为我没有使用RewriteEngine on- 所以它现在可以工作:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

http .htaccess

7
推荐指数
3
解决办法
9万
查看次数

如何在 Wireshark 中过滤 HTTP 500 响应及其请求?

如何在 Wireshark 中过滤 HTTP 500 响应及其请求?

我可以用来http.response.code == 500查找所有返回代码为 500 的响应,但我也希望能够看到这些响应的请求。

更新:我想自动执行此操作,以便我可以设置一个 tshark.exe 实例来记录某一天,并且只保存有趣的 HTTP 流量(有一个 WEBDAV 运行在同一台服务器上,有很多我不感兴趣的流量) )。

第二次更新:因为我主要想记录发送到 WebService 而不是 WEBDAVhttp.content_type contains "text/xml"的消息,所以我曾经过滤基于 xml 的消息。这不是我想要的 100%,而是生成足够小的日志以供进一步调试。

http wireshark filter

7
推荐指数
1
解决办法
2万
查看次数

在 nginx 上模拟 502 & 504

有没有办法模拟这些错误?我为它创建了一些自定义文件,但我想确保它们显示正确。我为每个虚拟主机发送了不同的消息。

先感谢您。

http nginx 502 504

7
推荐指数
1
解决办法
1万
查看次数

“连接过多”的正确 HTTP 状态是什么?

我正在开发一个 HTTP 服务器,它应该只允许每个用户有一定数量的连接。我如何优雅地告诉用户n不允许多个连接。我尝试n+1用 403回答th 请求,但显然这会杀死整个下载。(至少有DownThemAll!

http connection http-server

7
推荐指数
1
解决办法
7511
查看次数

使用 nginx 为特定用户代理提供不同的文件

使用nginx,如何为不同的用户代理提供不同的静态文件?例如,如果当前用户正在使用 iPhone,则应为他们提供服务mobile_index.html,而应为所有其他用户代理提供服务browser_index.html

找到解决方案:

server {
  listen 80;
  root /var/www;

  set $mobile_request '0';
  if ($http_user_agent ~ 'iPhone') {
    set $mobile_request '1';
  }

  location =/ {
    if ($mobile_request = '1') {
      rewrite ^ /mobile_index.html;
    }
    if ($mobile_request = '0') {
      rewrite ^ /browser_index.html;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

http nginx mobile-devices static-files useragent

7
推荐指数
1
解决办法
4150
查看次数

Linux,简单的http代理

我有一台运行在数据中心的 linux 服务器,它有一些额外的带宽和资源。

我想设置一个代理服务,以便我可以通过它从家里路由我所有的 http/https 流量。我知道如何配置我的浏览器与代理交谈,我只是不知道如何设置它的服务器端。我还想进行身份验证,以便只有我可以使用它

linux http proxy

7
推荐指数
1
解决办法
3万
查看次数

为什么 mod_security 需要 ACCEPT HTTP 标头字段?

经过一些调试,我发现 mod_security 的核心规则集会阻止没有(可选!)ACCEPT 标头字段的请求。

这是我在日志中找到的内容:

ModSecurity:警告。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“关键”] [标签“ PROTOCOL_VIOLATION/MISSING_HEADER"] [主机名 "example.com"] [uri "/"] [unique_id "T4F5@H8AAQEAAFU6aPEAAAAL"]
ModSecurity:访问被拒绝,代码为 400(第 2 阶段)。需要匹配“rx ^OPTIONS$”与“REQUEST_METHOD”。[文件“/etc/apache2/conf.d/modsecurity/optional_rules/modsecurity_crs_21_protocol_anomalies.conf”] [行“41”] [id“960015”] [msg“请求缺少接受头”] [严重性“

为什么需要这个标题?我知道“大多数”客户发送这些,但为什么他们的缺席被视为安全威胁?

http mod-security apache-2.2

7
推荐指数
1
解决办法
1万
查看次数

使用 AWS Elastic 负载均衡器强制使用 HTTPS

我需要将所有传入的 HTTP 流量重定向到我的弹性负载均衡器上的 HTTPS。

我厌倦了使用 Apache mod_rewrite:

 RewriteEngine On
 RewriteCond %{HTTP:X-Forwarded-Proto} !https
 RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)

利用负载均衡器添加的 X-Forwarded-Proto 标头,此规则应指示用户浏览器请求同一 URL 的 HTTPS 版本。

到目前为止它不起作用(没有重定向发生)。

我究竟做错了什么?

有一个更好的方法吗?

编辑:

这最终奏效了:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

http https amazon-web-services apache-2.2 amazon-elb

7
推荐指数
1
解决办法
9771
查看次数