开放重定向: 您的网站有没有被恶意利用?

2009年2月18日星期三

Jason Morrison

原文: Open redirect URLs: Is your site being abused?
发表于:2009年1月30日星期五,下午5:17

没有人愿意被恶意软件或网络垃圾侵扰, 这正是我们都乐意遵守网站安全运营推荐方法的原因。 但是否有一种方式能让网络垃圾制造者无需在您的服务器中设置虚拟 脚本就可以利用您的网站呢? 的确有,那就是通过 滥用开放重定向网址

网站管理员们经常会面对诸多需要帮助用户重定向到其他页面的情况。 不幸的是,对任意目的地开放的重定向很可能被滥用。 这是一个防不胜防的滥用形式,因为它充分利用了您网站的功能, 而不是利用您网站的潜在缺陷或安全漏洞。 网络垃圾制造者试图利用您的域名作为临时登陆页 以将用户、搜索用户和搜索引擎诱骗到看似指向您的网站, 实际上却重定向到其垃圾网站的链接。
我们正在努力把滥用网址排除在我们的索引之外, 但从您的角度确保您的网站没有以这种方式被滥用也是非常重要的。 您一定不希望您域名上的链接把用户带到一些充斥着色情图片、恼人病毒、 恶意软件以及欺骗性企图的网页上来。 网络垃圾制造者会生成链接,并使之出现在搜索结果中, 而这些链接往往指向那些您不想与之有任何瓜葛的垃圾网站。

最近这种滥用比较普遍, 所以我们想让您和其他网站管理员们对此有所了解。首先, 我们将举出一些重定向被滥用的例子, 随后我们将探讨如何发现被滥用的网站以及如何对此进行处理。
被网络垃圾制造者滥用的重定向
我们注意到, 网络垃圾制造者盯上了从大型知名企业到小型地方政府机构在内的各类网站。 下面的列表是各种被广泛使用的重定向的示例。 这些都是合法的技术手段,但如果这些技术手段也正在您的网站上被应用的话, 您要谨防滥用的发生。


  • 将用户重定向到服务器某一文件 (如 PDF文件) 的脚本有时会很脆弱,容易被恶意利用。 如果您使用的是可以上传文件的内容管理系统( CMS ) ,您应该确认您网站下载区的链接是直接指向文件而不是通过重定向来指向的。请留意这样的链接形式:
example.com/go.php?url=
example.com/ie/ie40/download/?

  • 网站的内部搜索结果页 上有时有自动重定向选项,这也比较容易被恶意利用。请留意下面形式的网址,它们会将用户自动重定向到“url="后所跟的网址上:

example.com/search?q=user+search+keywords&url=

  • 跟踪点击量 的联盟计划系统、广告程序或网站统计信息也是有被滥用危险的。 示例网址包括:
example.com/coupon.jsp?code=ABCDEF&url=
example.com/cs.html?url=
  • 代理网站 ,虽然这不完全是技术上的重定向, 但它被设计成帮助用户登录其他网站,因此也比较容易遭到滥用。 包括用于学校和图书馆的代理网站。例如:
proxy.example.com/?url=
  • 在某些情况下, 登录页 会将用户重定向回他们登录前试图访问的页面,而这也是容易遭恶意利用的。 请留意类似这样的网址参数:
example.com/login?url=
  • 用户离开网站时 向用户提供信息的缓冲网页 的脚本易被滥用。 大量的教育机构, 政府部门以及大型企业的网站采用这样的脚本来让告知用户, 您正在离开本站而前往访问外部网站上的信息,例如以下网址模式:
example.com/redirect/
example.com/out?

example.com/cgi-bin/redirect.cgi?
我的网站被恶意利用了么?
除了上述网址实例外, 您的网站还有可能开放了其他重定向方式。
即使您本身不是网站程序开发人员,还是 有许多简单易行的方法可以检查您的网站是否有被恶意利用的危险:
  • 检查被滥用的网址是否在谷歌搜索结果中出现。尝试在搜索框中输入[site:您的域名 ]搜索您的网站,看看是否有您不熟悉的内容出现在搜索结果中。您还可以在搜索词中输入一些按理说不应出现在您内容中的关键词, 如商业意味非常重的词汇或是某些色情词汇。 正常情况下 ,搜索[site:您的域名 某色情词汇]应该没有结果,但如果您搜索到结果的话,那么您就应该提高警惕了。您可以使用 谷歌快讯 进行自动搜索检查。

  • 您也可以留意显示在网站管理员工具 热门搜索查询 中的看起来不太正常的搜索词。 如果您的网站是关于家族谱系学的, 但在搜索查询中却大量出现色情、博彩等词汇, 那么这可能是一个危险的信号。另一方面, 如果您有一个药物信息的网站, 如果某名人的名字频繁出现在您的热门查询中,那么这也是不太正常的。 请密切留意网站管理员工具消息中心中来自谷歌的任何信息。

  • 检查您的服务器日志或网络分析软件包,看看有没有陌生网址参数 (比如 "=http:" 或 "=//") 或某段时间某一重定向网址的访问量突然增大的情况。 您也可以在 网站管理员工具 中查看含有外部链接的网页。

  • 如果有用户抱怨您网站的有不良内容或恶意软件,而您又能极为肯定您的网站肯定不存在这些问题的话,那么您也应该提高警惕。 您的用户可能被您域名上的某些网址带到了含有恶意内容的其他网站上,而误以为这些内容是属于您的网站的。
我可以做些什么呢?
遗憾的是,没有一种简单的方法能百分之百地确定您的重定向没有被恶意利用。 一个开放的重定向本身不是一个缺陷或安全漏洞,对一些用户来说, 重定向需要保持相对开放。但也有一些事情您是可以做的, 以防止您的重定向被滥用,或者至少使它们不那么容易成为恶意利用的目标, 其中有些可能不是那么简单,您可能需要编写一些自定义代码, 或是与您的供应商沟通看看能否使用给系统软件打补丁的方式解决。

  • 改变重定向代码,增加检查referer的环节 。因为在大多数情况下, 每个对重定向脚本的合法访问和使用都应当通过您的网站, 而不是搜索引擎或其他地方。您可能需要多一些理解, 因为一些用户的浏览器可能不会发送referer信息, 但如果您发现有用户来自外部网站,您可以予以阻止或警告。

  • 如果您的脚本本意只是向用户发送内部网页或文件(例如, 文件下载的网页) ,您应该 明确禁止任何指向外部的重定向

  • 考虑制定一个安全目的地网站的名单 。在这种情况下, 您的代码将记录所有向外重定向的链接, 然后在向用户进行重定向之前先根据这个名单进行检查以确保重定向目的地是一个合法的经您许可的网站。

  • 将您的重定向签名加密 如果您的网站确实需要提供网址重定向, 您可以将目标网址打散,并将加密签名作为另外一个参数包含在实施重定向的网址上。 这可以使您的网站在做重定向时无需向公众开放你的网址转向器

  • 如果重定向功能对您的网站来说可有可无,那么建议您还是 禁用或取消重定向功能 我们经常发现,对很多网站来说,网络垃圾制造者是这些网站重定向功能的唯一使用者 ,这仅仅是因为网站建设初期这项功能被默认为启用,而您对此毫无察觉。

  • 使用 robots. txt 将搜索引擎排除在网站重定向脚本之外 尽管这不能完全解决问题, 因为攻击者仍然可以在垃圾邮件中使用您的域名,但这样做可以使您的网站不那么容易成为黑客的攻击目标,而且用户也不会被搜索结果中的恶意重定向网址欺骗。 如果您的重定向脚本与其他脚本保存在同一个子文件夹里,而且另外的脚本也没有必要出现在搜索结果中的话,建议您将包含脚本的整个子目录对搜索引擎封闭,这将增加攻击者找到您脚本的难度,从而起到保护作用。

目前,开放重定向的滥用成为一个越来越严重的问题,我们认为, 如果更多的网站管理员对此有所了解, 就会使攻击者恶意利用的行为变得愈加困难。 欢迎您在文后或 网站管理 员支持论坛 中发表您在这方面的心得体会。