如何阻止POST请求的IP,但不是GET?

时间:2013-08-30 13:55:09

标签: apache .htaccess

我有一个网站,我收到了很多垃圾评论。查看垃圾邮件来自的IP地址,它们主要来自那些不太可能真正想要与我的英语网站进行交互的国家,所以我只想阻止它们。

这应该非常简单,但是如果来自这些国家/地区的流量实际上可以查看我的内容,而不是访问评论,注册等表单,我会喜欢它。因此,我希望允许他们发出GET方法请求,而不是POST方法请求。

理想情况下,我希望在网站的.htaccess文件中执行此操作,而不是将其实际编码为支持网站的PHP脚本。经过一番搜索,我发现了我认为正是我需要的东西:。似乎我可以完全按照上面描述的那样做:

# Block China, Russia etc. from POSTs and similar methods
<Limit POST PUT DELETE>
order deny,allow
deny from 210.5.214.128/29
deny from 210.89.69.160/28
# Hundreds more lines...
# My current IP (sample provided here, actual used in reality), to test
deny from 100.100.100.100
allow from all
</Limit> 

# Allow anyone to do GETs and HEADs
<Limit GET HEAD>
order deny,allow
allow from all
</Limit>

但它没有达到预期的效果。我可以做GET请求(根据需要),但POST仍然可以正常工作,我可能会期待403 Forbidden错误。

如果我没有使用该标记并将我的IP放入拒绝列表中,则会成功阻止我访问该网站(GET和POST)。

有人可以告诉我需要改变什么吗?

2 个答案:

答案 0 :(得分:3)

更改允许拒绝的顺序如下:

<Limit POST PUT DELETE>
order allow,deny
allow from all
deny from 210.5.214.128/29
deny from 210.89.69.160/28
# Hundreds more lines...
# My current IP (sample provided here, actual used in reality), to test
deny from 100.100.100.100
</Limit> 

<Limit GET HEAD>
order deny,allow
allow from all
</Limit>

答案 1 :(得分:0)

阻止后端库例如:/ wp-admin除了允许IP(即使你有密码)

<Limit POST PUT DELETE>
 order deny,allow
 deny from all
 #allow from localhost
 #allow from 127.0.0.1
 allow from xxx.xxx.xx.xx
</Limit>

# Allow anyone to do GETs and HEADs
<Limit GET HEAD>
 order deny,allow
 allow from all
</Limit>