防止外链(防盗链)技术

今天看了知乎上一个关于如何查看知乎用户的头像大图?的问题,其中一个答案是同学写的,涉及到了外链的问题。

原来一般外链使用HTTP_REFERER来实现的,HTTP_REFERER是HTTP协议head的一部分,可以通过HTTP_REFERER来确定该链接是从哪里链接进来的。

以下为c#实现防盗链的代码

if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))
{
Server.Transfer("Error.aspx");
}
参考:http://baike.baidu.com/link?url=GRtlKHh7XXQps5x1Ojcp-NTgr6HVt9jByxP5a9v8yt9_VHlIeXUfMOA5UvO_xN_eHqYPHVCZ8d8hPJkrikLkMK


该回答还提到了火狐浏览器的一个插件RefControl ,可以通过这个插件伪造链接页地址

关于这个附加组件

您可以创建一个网站列表,以及对应的每个站点应该发送的引用页。您可以选择无条件地发送这些引用页或者只在有第三方请求时发送。另外,您可以为不在列表中的任何其他站点指定默认的发送行为。








你可能感兴趣的:(WEB)