如何检测传出链接(apache,php)



我正在开发一个网站,但在某个时候,我需要检测我网站上的传出链接,要么禁止这些链接,要么接受这些链接,我不知道facebook是怎么做到的,但他们可以通过facebook.com/l.php来做,如果链接被标记为垃圾邮件,用户会收到通知。

我不知道这是php还是htaccess,它使用DOMDOCUMENT在php中工作,但它不是真正的解决方案。

这不是在Apache或.htaccess级别上解决的问题。基本上,无论何时输出链接,都要检查它是否是外部的,如果是,请将目标更改为重定向程序。

然后,重定向器可以只检查传递的URL,如果它被标记为恶意,它可以显示一条消息,如果不是,它可以自动重定向或显示你要离开网站的某种通知。

我不能100%确定Facebook是如何实现它的,但我建议使用JQuery(或另一个javascript库)将所有外部链接重写为验证PHP脚本(例如Facebook的l.PHP脚本),并将预期的url作为GET参数传递。

使用JQuery,它可能看起来像:

$('a[href]').each(function(){
  var safe_href = 'http://yourdomain.com/yourscript.php?url='+$(this).attr('href');
  $(this).attr('href', safe_href);
});

然后,您可以在script.php中根据变量$_GET['url']进行数据库查找,如果安全则重定向到该url,如果不安全则显示消息。

l.php是一个通过$_GET['u']读取链接的脚本。有了你手中的url,你就可以决定将客户端重定向到哪里。

因此,看起来,您希望用户教会您的应用程序什么是垃圾邮件,什么不是垃圾邮件。为此,你将需要一个按钮"报告垃圾邮件"旁边的网址。

最新更新