我正在尝试强化运行两个带有单独vhost设置的wordpress网站的 Apache 2.4 Web服务器。部署在Windows 2012 r2上。几周前我被黑了,服务器完全丢失了。在新服务器上,他们仍在尝试通过请求后注入/代码执行来入侵网站。我在尝试阻止服务器提交时未发送的所有POST
请求时遇到麻烦。
我尝试过的东西
<Location>
,<Directory>
,<Limit>
标签及其属性,例如GET
,PUT
,POST PUT DELETE
,尝试使用各种组合Require
条语句,即local
,ip
,host
和order allow, deny
模式。 Allow all from
<Directory "/">
,<Location >
,<LimitExcept >
标签,包括诸如GET
,POST
和连击的属性。
各种<if >
语句
AllowMethod
语句
将.htacess
中的目录列入白名单
将尝试放置在不同的文件上下文中。例如httpd.conf
,Vhost.conf
,.htaccess
。我在Apache文档中找到的与指令上下文相关的任何文件。甚至将其放置在它不适合咯咯笑的地方。什么都没有,我在文档中阅读或在堆栈上溢出似乎都行得通。
所有身份验证模块都已加载,例如mod_auth,mod_host等。只需假设模块正常即可。
我想实现的是向deny
或<Limit POST>
请求。仅当服务器使用服务器IP提交请求时,才严格允许它们在动态<Directory "/.*"> or
`中得到响应。因此,请求的IP:port应该是“远程地址”,因为apache本地服务通过PHP发送请求方法。我相信这是正确的逻辑。
下班之前我最后有时间要尝试的是下面的代码,尝试动态的
谢谢您的帮助,请在答案中包含一个代码示例。
<Directory "/.*">
<if "%{REQUEST_METHOD} == 'POST'">
<Limit POST PUT DELETE>
Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx'
</Limit>
</if>
</Directory>
现在我尝试了
<Directory "/">
<if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
<Directory "/">
<if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
今天我尝试了以下方法 导致Wordpress现在有了500而不是403 我在htaccess文件中尝试过这些
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
AllowMethod POST
<LimitExcept GET>
Require ip "xx.xx.xx.xx"
</LimitExcept GET>
}
</IfModule>
<Directory "/.*">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
AllowMethod POST
<LimitExcept GET>
Require ip "xx.xx.xx.xx"
</LimitExcept GET>
}
</IfModule>
<Directory "/">
<IfModule mod_rewrite.c>
RewriteEngine
RewriteEngine On
RewriteBase /
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
RewriteCond req(-R == %{REMOTE_ADDR})
AllowMethod GET POST
order allow,deny
allow from all
<LimitExcept GET>
Require ip xx.xx.xx.xx
</LimitExcept>
}
</IfModule>
</Directory>
<Directory "/">
<IfModule mod_rewrite.c>
RewriteEngine
RewriteEngine On
RewriteBase /
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
RewriteCond req(-R == %{REMOTE_ADDR})
#AllowMethod GET POST
AllowOverride All
order allow,deny
allow from all
<LimitExcept GET>
# Require ip xx.xx.xx.xx
deny from all
</LimitExcept>
}
</IfModule>
</Directory>
请坚持有关发布的配置的相关解决方案。
答案 0 :(得分:1)
编写这样的代码
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
// Your code here
}