我有一个记录信息的系统,有时会发现某个特定的IP地址做了一些讨厌的事情,比如试图利用phpMyAdmin(即使它甚至没有安装在系统上)。
当我找到这些违规者时,我将IP地址添加到阻止列表中,无论页面是否存在都会返回一条小消息,并记录IP地址及其查询字符串,以便我可以密切关注它们。
问题是,它们中的大多数似乎是扫描的脚本,而且我在技术上仍然使用小消息返回200状态代码。我希望更多地使用状态代码,但我不确定哪一个最适用。
我找到了列表here,似乎401
或403
最适用。哪个是“禁止”IP地址的最佳代码?
答案 0 :(得分:11)
403
或404
最适合。请参阅403
的参考:
“(...)如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。如果服务器做了不希望向客户提供此信息,可以使用状态代码404(未找到)。“
来源:https://tools.ietf.org/html/rfc2616#section-10.4.4
例如,您可以返回状态403 - Forbidden
并在响应正文中描述原因。我不确定是否允许返回类似403 - Banned for ...
的状态代码。无论如何,无辜的用户可能对403的原因特别感兴趣。