我正在实施facebook“赞”按钮。
一切正常 <fb:like
href="http://www.thismydomain123.com/IlikeThisPage.php?id=123"
layout="standard"
show_faces="false"
width="450"
action="like"
colorscheme="light" />
但是将可共享内容放在安全文件夹中是不行的(直接访问该文件夹会提示“mySecureFolder中的http://www.thismydomain123.com需要用户名和密码......”):
<fb:like
href="http://www.parisgallery.com/mySecureFolder/IlikeThisPage.php?id=123"
layout="standard"
show_faces="false"
width="450"
action="like"
colorscheme="light" />
那么,有没有办法对此进行身份验证或任何其他更好的解决方案?
非常感谢,
Steilflug
答案 0 :(得分:6)
简而言之,没有一种解决方案既可行又安全。当用户点击页面上的“赞”按钮时,Facebook会从自己的服务器上ping您的页面,以便在新闻源上显示图片和文字(请参阅Why does Facebook appear in my server logs?)。诀窍是让Facebook进入,但阻止所有其他未经过身份验证的流量。
Facebook使用用户代理facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
进行ping操作。如果您不太关心安全性,则可以允许使用该用户代理字符串访问任何代理的页面。然而,重要的是要注意,这是完全不安全的,因为任何代理都可以自己更改其用户代理字符串。 Facebook也不保证他们的用户代理字符串不会改变,因此这种方法可能随时停止工作。
另一种选择是简单地允许Facebook IP地址上的任何人无需身份验证即可访问。这可以起作用,假设Facebook对其所依据的IP保持一致,但同样在这方面也无法保证。如果您只希望某些Facebook功能和/或员工能够在未经验证的情况下查看您的内容,或者Facebook发布其对这些IP块的所有权,那么这也可能是不安全的。
我认为你真正的问题是你试图让内容同时受到保护和共享,这是一种悖论。解决此问题的唯一真正解决方案是允许任何人阅读您的内容。