所以假设我使用某些代码检测用户的ip以执行限制....
有没有办法让用户通过任意设置他们的ip到任何他们想要的任何ip(例如通过代理服务器或其他东西)来规避这一点,从而允许他们在我检测到它时选择要显示的特定ip
答案 0 :(得分:0)
排序 - 如你所提到的,代理是一种风险,但它会让攻击者的生活变得更加困难,因此仍然值得使用IP禁令。
监控您的日志,自动发出警报,如果攻击来自另一个IP,则禁止它。如果你让攻击者的生活足够艰难,他们可能会放弃。
答案 1 :(得分:0)
有几种tunneling和proxy-based技术可以有效地为属于原始计算机的HTTP请求提供不同的IP地址。我在this回答中提到了几种方法,以及here。在许多情况下,实际上不可能将真实的中继连接分开......
一般情况下,由于多种原因,您无法伪造互联网上的TCP连接源作为任意地址,其中一些原因是:
TCP是一种有状态协议,即使为了建立连接,数据包也会来回传递。伪造IP源地址意味着您无法恢复任何数据包。
某些ISP会丢弃在自己的网络中生成的数据包,这些数据包在正确的子网内没有源IP。这通常在客户端连接级别完成,以保护ISP网络并防止随机数据包由于客户端的简单错误配置问题而将客户端信息泄漏到Internet。
ISP过滤器还会阻止用户设置任意IP - 如果不是出于任何其他原因,那么只是因为ISP 以高得多的价格与静态IP地址建立连接并拥有用户设置自己的IP会破坏它。更不用说如果ISP的客户之间可能存在IP冲突而导致的混乱......
因此,一般来说,您不能只欺骗TCP连接的来源。您必须使用中间计算机来中继连接。
但请记住,有动力且经验丰富的攻击者可能拥有由数百万属于无辜用户的受感染计算机组成的僵尸网络。理论上,每台计算机都可以用作连接中继,从而允许潜在的攻击者选择各种各样的IP地址。
最重要的是,简单的基于IP的检查和过滤器不能以任何形式确保连接的合法性。您应该使用其他方法来保护您的服务:
HTTPS和正确的用户帐户。
广泛记录和监控您的服务。
入侵检测系统和自动攻击响应者(请注意这些 - 确保不要自己锁定 )。
除非您告诉我们您提供的服务,您想要应用的限制以及您担心的攻击类型,否则我们无法提供更具体的答案......