使用HTTP_REFERER和IP地址验证referer站点

时间:2013-11-25 08:00:00

标签: php http http-headers

我有一个Web服务(返回数据),只有少数“列入白名单”的远程服务器才能访问。因此,当远程服务器向我的服务器发送请求时,我会在$_SERVER['HTTP_REFERER']字段中查看列入白名单的域名和相应的IP地址(我的网络服务通过全局阵列知道)。可以绕过这种白名单请求方法吗? 我知道实现引用欺骗很容易....但请记住,我正在检查引用程序和相应的IP地址,这两个地址都是我的应用程序已知的确定。

如果这不是一件安全的事情,是否有人有另一种方法只允许“白名单”域访问给定的Web服务?

2 个答案:

答案 0 :(得分:1)

除了原始IP地址之外,我不认为检查Referer HTTP标头会产生任何安全优势。话虽如此,基于IP的身份验证本身并不是safest practice。如果您真的想要保护自己的API,请更好地了解SSL和某种形式的HTTP authentication

答案 1 :(得分:1)

如评论所述,我不确定为什么会在您的方案中首先设置HTTP Referer标头,但我们假设它是,并且其域对应于客户端的IP。 Referer标头是客户端发送的任意值,它很容易被欺骗。客户端的IP OTOH不是可欺骗的(不包括复杂的网络级攻击,要求攻击者基本上已经在一方或另一方受到攻击)。您要问的是,使用不安全,无意义的值来确认一个已经尽可能安全的值是否有意义。答案是否定的。坚持使用IP过滤器,这已经足够了。

如果您想进一步加强身份验证,请使用适当的身份验证方案,与您的客户共享密码(用户名/密码,API令牌,Oauth或类似密码)。