我正在一个关于登台环境的网站上工作。在登台环境中,网站使用 http 基本身份验证。而且我发现如果启用了 http 基本身份验证,facebook 社交按钮和推文分享按钮将不起作用。有什么解决方法吗?或者我应该完全禁用http基本身份验证
问问题
905 次
2 回答
3
更好的解决方案可能是利用Facebook 应用程序安全文档中提供给我们的一些信息。截至 2012 年 8 月,Facebook 将这些 IP 地址列为其服务器用来访问外部站点的 IP 地址:
31.13.24.0/21
31.13.64.0/18
66.220.144.0/20
69.63.176.0/20
69.171.224.0/19
74.119.76.0/22
103.4.96.0/22
173.252.64.0/18
204.15.20.0/22
2401:db00::/32
2620:0:1c00::/40
2a03:2880::/32
要获取更新的列表,您可以使用此命令 -
whois -h whois.radb.net -- '-i origin AS32934' | grep ^route
所以你会使用一些类似于这个 PHP 版本的代码 -
if(in_array($_SERVER["REMOTE_ADDR"],$arrayOfIPAddresses) === TRUE){
// current request is coming from Facebook's IP
}else{
// current request is not from Facebook
}
于 2013-01-25T10:33:06.213 回答
1
此解决方案取决于您的基本身份验证方法对您的重要性。不过,您已经准确地确定了您的问题 - 事实上,Facebook 的服务器无法访问需要密码的页面。
您似乎愿意禁用此密码身份验证,这让我相信它的目的只是混淆对登台服务器的访问,而不是保护它。如果这是真的,那么有一些简单的方法可以让 Facebook 的服务器访问数据,同时仍然要求到达您页面的普通用户(可能是偶然的)输入密码。一种这样的方法是检查与请求一起发送的用户代理 -
PHP中的一个例子 -
if(stristr($_SERVER["HTTP_USER_AGENT"],'facebook') === FALSE){
// require password
}else{
// allow request with user agent containing Facebook
}
现在必须在这里说,用户代理字符串可以被欺骗/伪造,不应该被认为足够准确,不能被 100% 信任。
于 2013-01-25T10:28:43.093 回答