Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Apache中禁用HTTP 1.0协议?_Apache_Network Protocols_Http 1.0 - Fatal编程技术网

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

如何在Apache中禁用HTTP 1.0协议?,apache,network-protocols,http-1.0,Apache,Network Protocols,Http 1.0,HTTP 1.0存在与会话劫持相关的安全弱点。 我想在我的web服务器上禁用它。您可以对照mod rewrite子句中的server\u协议变量进行检查。一定要把这条规则作为第一条规则 RewriteEngine On RewriteCond %{SERVER_PROTOCOL} ^HTTP/1\.0$ RewriteCond %{REQUEST_URI} !^/path/to/403/document.html$ RewriteRule ^ - [F] 的附加否定检查^/path/to/40

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

您可以对照mod rewrite子句中的
server\u协议
变量进行检查。一定要把这条规则作为第一条规则

RewriteEngine On
RewriteCond %{SERVER_PROTOCOL} ^HTTP/1\.0$
RewriteCond %{REQUEST_URI} !^/path/to/403/document.html$
RewriteRule ^ - [F]

的附加否定检查^/path/to/403/document.html$
用于向用户显示被禁止的页面。否则会导致递归。

如果您在基于名称的虚拟主机上(并且每个虚拟服务器都没有自己单独的IP地址),那么从技术上讲,使用HTTP/1.0连接到您的虚拟主机是不可能的;只有默认服务器(定义的第一个虚拟服务器)可以访问。这是因为HTTP/1.0不支持HTTP“主机”请求头,基于名称的虚拟主机上需要主机头才能“选择”请求要发送到的虚拟主机。在大多数情况下,对真实HTTP/1.0请求的响应将是400错误请求。如果您确实设法使代码正常工作,但后来尝试使用自定义错误文档(请参阅Apache core ErrorDocument指令),然后,阻止请求的结果将是一个“无限”循环:服务器将尝试使用403禁止响应代码进行响应,并提供自定义403错误文档。但这将导致另一个403错误,因为对所有资源(包括自定义403页)的访问都被拒绝。所以服务器将生成另一个403错误,然后尝试响应它,创建另一个403,另一个,另一个。。。这将一直持续到客户机或服务器放弃为止

我的建议是:

 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
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteCond %{REQUEST_URI} !^/path-to-your-custom-403-error-page\.html$
在mod_rewrite中,类似于:

 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
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteCond %{REQUEST_URI} !^/path-to-your-custom-403-error-page\.html$
使用mod_policy中的PolicyVersion指令,Apache 2.5可以实现这一点(请注意,从2018年10月起为将来时态)。PolicyVersion指令设置服务器、虚拟主机或目录结构接受的HTTP协议的最低级别,具体取决于指令的位置

首先启用策略模块:

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

最后,重新启动服务器:

systemctl restart apache2