首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Apache中禁用HTTP 1.0协议?

如何在Apache中禁用HTTP 1.0协议?
EN

Stack Overflow用户
提问于 2017-05-31 18:25:26
回答 3查看 8.3K关注 0票数 2

HTTP 1.0存在与会话劫持相关的安全漏洞。我想在我的web服务器上禁用它。

EN

回答 3

Stack Overflow用户

发布于 2017-05-31 18:32:54

您可以在mod-rewrite子句中检查SERVER_PROTOCOL变量。请务必将此规则放在第一条规则中。

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{SERVER_PROTOCOL} ^HTTP/1\.0$
RewriteCond %{REQUEST_URI} !^/path/to/403/document.html$
RewriteRule ^ - [F]

!^/path/to/403/document.html$的额外否定检查是为了向用户显示禁止的页面。否则将导致递归。

票数 3
EN

Stack Overflow用户

发布于 2017-11-11 02:33:40

如果您在一个基于名称的虚拟主机上(并且每个虚拟服务器都没有自己单独的IP地址),那么在技术上不可能使用HTTP/1.0连接到您的虚拟主机;只有默认服务器--定义的第一个虚拟服务器--是可以访问的。在大多数情况下,对一个真正的HTTP/1.0请求的响应将是一个400Bad的错误代码,但是您后来尝试使用自定义错误文档(参见Apache指令),那么阻塞请求的结果将是一个“无限”循环:服务器将尝试响应一个403 - Request.If响应代码,并提供自定义的403错误文档。但这将导致另一个403错误,因为对所有资源--包括自定义403页面--的访问都被拒绝。因此,服务器将生成另一个403错误,然后尝试响应它,创建另一个403、另一个和另一个...这将继续下去,直到客户端或服务器放弃。

我建议这样做:

代码语言:javascript
复制
 SetEnvIf Request_Protocol HTTP/1\.0$ Bad_Req
 SetEnvIf Request_URI ^/path-to-your-custom-403-error-page\.html$ 
 Allow_Bad_Req
 #Order Deny,Allow
 Deny from env=BadReq
 Allow from env=Allow_Bad_Req

在mod_rewrite中,类似于:

代码语言:javascript
复制
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteCond %{REQUEST_URI} !^/path-to-your-custom-403-error-page\.html$
票数 1
EN

Stack Overflow用户

发布于 2018-10-03 00:56:58

在Apache2.5中,使用mod_policy中的PolicyVersion指令,这将是可能的(注意将来时-截至2018年10月)。PolicyVersion指令设置服务器、虚拟主机或目录结构所接受的最低级别的HTTP协议,具体取决于该指令所在的位置。

首先启用策略模块:

代码语言:javascript
复制
a2enmod mod_policy

然后在服务器配置、vhost或目录(在.htaccess中不起作用)中,添加:

代码语言:javascript
复制
PolicyVersion enforce HTTP/1.1 

最后重启服务器:

代码语言:javascript
复制
systemctl restart apache2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44282207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档