网站地图    收藏   

主页 > 后端 > 网站安全 >

Web攻防系列教程之漫谈短链接安全 - 网站安全

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 随着微博的盛行,短链接也渐渐被广大网民们所熟识。但是,短链接是通过什么原理实现的呢?在短链接带来便利的同时又是否会带来安全隐患呢?本文结合目前网络环境中主流的短链...

随着微博的盛行,短链接也渐渐被广大网民们所熟识。但是,短链接是通过什么原理实现的呢?在短链接带来便利的同时又是否会带来安全隐患呢?本文结合目前网络环境中主流的短链接形式和应用场景进行了详细分析和讨论。

通俗地讲,短链接就是将较长的URL地址,通过特定的算法转换为简短的网址字符串。早期,短链接并没有像现在网络环境中这么流行,当时它主要应用在图片上传网站中,上传站通过特定的算法缩短URL链接地址,达到减少代码字符数的目的。这样,使用者就可以在有字符数限制的网站中,运用短链接达到外链图片的目的。现在,随着微博的盛行,短链接也渐渐被广大网民们所熟识,因为微博网站对用户输入的字数都有限制,较长的URL地址又占据了过多的字符数,而短链接正好解决了这种问题,在节省字数的同时,给博主留下更多的文字空间。

随处可见的短链接

目前,主流的微博网站都注册了自己的短链接域名,如新浪微博注册了t.cn,腾讯微博注册了url.cn。当我们在新浪微博中输入一个URL地址时,如我们输入瑞星网站一条新闻的URL地址,如图1所示:

图1

点击发布以后,新浪微博程序会将我们输入的URL地址自动转换为相应的短链接地址,如图2所示。

 
图2

我们发现,较长的URL地址转换为短链接地址以后,确实方便微博内容的显示了。但是在减少字符数和便捷显示的同时,我们也发现短链接也带来了一定的安全隐患,那就是用户无法通过短链接地址直接看出点击这个短链接地址后究竟会打开什么样的网站。在微博网站中,我们可以把鼠标悬停放在URL地址上,查看这个短链接地址所表示的真实地址,如图3所示。

图3

但是,如果短链接地址出现在其他网页或者出现在即时通讯工具中的话,用户到底是选择去浏览还是放弃浏览呢?或者即使网站会对短链接指向的地址进行提示,用户又是否会未查看提示,而直接浏览呢?

我们针对这种情况作如下测试,首先我们寻找一个包含有恶意网马代码的地址,在QQ群中发布,然后将该网马地址通过新浪微博生成相应的短链接,并将相应的短链接地址在QQ群中发布,得到的结果如图4所示。

 
图4

结果显示,存在恶意代码的网马地址,QQ可以直接提示该地址为恶意地址;但是通过短链接变形以后,QQ便无法确认该地址是安全网址还是恶意网址了。

又如曾经爆发的新浪微博蠕虫事件,大量认证用户受到感染,并自动发布含有恶意代码的短链接地址,面对这样的认证用户,网民们往往会降低安全警惕意识,选择直接点击浏览,如图5所示。

 
图5

试想如果恶意黑客将挂马地址或者钓鱼地址通过短链接变形的方式直接发送在QQ群、微博或是网页中诱骗用户点击,带来的危害和影响是无法想像的。要解决这种威胁,我们还是先来了解一下短链接实现的原理。

短链接原理

短链接主要是通过域名重定向技术将较长的域名信息通过一定的转换算法进行处理,用另外一个较短域名信息进行表示。当用户访问这个较短的域名信息时,就可以直接跳转到较长的URL地址上。
域名重定向技术也可以称为URL转发,是通过网站服务器或者Web应用程序的设置,将访问当前域名的用户引导至指定的另一个URL地址。

常用的域名重定向方式有:A、301重定向,B、302重定向,C、META标签刷新。

301重定向代表永久性转移(Permanently Moved)。

302重定向代表暂时性转移(Temporarily Moved)。

META标签刷新在2000年前比较流行,不过现在已很少见。其具体是通过网页中的META标签,设定相应的跳转地址,在特定时间后重定向到新的网页。

301重定向和302重定向的区别主要表现在搜索引擎爬取网络链接的处理上,对于网民来说,两者的效果都是将访问的地址指向到另外一个地址。

在301重定向和302重定向中,网站服务器都会通过返回的HTTP数据头中的Location段中给出相应的跳转地址。所以在了解了短链接实现的原理以后,想获取到短链接地址所指向的真实地址,只需对短链接域名的重定向进行检测即可。实际上,我们可以通过多种方法实现获取短链接指向的地址。
网上有一些网站可以提供域名重定向检测的网站,可以通过此类网站获取到短链接地址指向的真实域名地址,如http://www.longurl.org/。我们可以通过调用该网站提供的API接口获取相关信息,我们使用腾讯微博生成的短链接地址http://www.2cto.com /0DlZLg为例,提交URL地址http://api.longurl.org/v2/expand?url=http://url.cn/0DlZLg,返回的结果如图6所示。

 
图6

这里的结果是该短链接地址跳转的地址是百度的首页。

当然,调用其他网站提供的接口反馈的结果是经过加工处理的,不能看到服务器反馈回来的数据报文。那么我们自己构造一个工具实现对短链接地址的查看,构造PHP代码如下图7所示:

 
图7

以上代码的作用是接收用户输入的短链接地址,并发送相应的HTTP请求,并将服务端返回的数据信息进行显示。将以上代码保存在安装有PHP的环境中,并保存为CheckTinyUrl.php,使用方法是在命令行模式下执行命令“php CheckTinyUrl.php短链接地址”,这里使用新浪微博中的短链接进行测试,测试结果如下图8所示。

 
图8

从返回的结果中可以发现,HTTP返回的状态码为302,并且重定向的地址在Location段中,正是我们之前测试输入的瑞星新闻的地址。

同样,也可以通过其他程序设计语言编写相应的短链接重定向检测工具,方便应用在未安装PHP语言环境的机器中,实现的原理都是通过提交数据包并接收返回的HTTP数据报文头信息,查看到相应的重定向地址,如下图9所示。

 
图9

现在,越来越多的人开通了自己的微博,短链接的应用范围也在不断的扩大。所以,我们建议网民,在使用微博的时候,需要提高警惕,尤其是针对第三方授权应用,建议在点击前充分了解其可能带来的风险,获取短链接重定向的完整URL地址,然后再安全浏览。同时,安装安全防护软件,对可能存在的恶意网址、恶意钓鱼地址、恶意XSS跨站脚本攻击及网马攻击等行为进行有效拦截

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论