跳转页面如下:

图3 CSDN跳转页面
查看页面源代码:

图4 CSDN漏洞源码
观察发现一共有4处出现测试字符串,其中一个没做过滤。于是轻易的可以构造弹出框的XSS注入语句,观察发现成功。

图5 CSDN弹出框
漏洞预防
由于在我的前一篇介绍搜索框XSS漏洞的文章中已经简单的介绍过怎么预防XSS漏洞了,所以XSS漏洞的预防在这里就不重复了,这里只讲述跳转漏洞预防。
这里以一个抽象的例子的来说明怎么预防跳转漏洞。
比如有个博客社区,一共普通用户点击社区首页的写博客,调用write_blog.php,其一般逻辑一般先检验登录,如果校验成功则继续,如果不成功则跳转到登录页面user_login.php,当用户在user_login.php正确的输入自己的帐号、密码后就会自动跳转到前一个页面。user_login.php之所以能够跳转到write_blog.php而不会跳转到 download.php往往需要在调用user_login.php的时候给他传递回调url作为参数。例如CSDN是:
http://passport.csdn.net/UserLogin.aspx?from=http://d.download.csdn.net/down/357656/chenxhcc
正如前文所说,单单传递一个回调url作为参数是不安全的,这里需要一个机制保证回调url不被修改,最简单的方法就是增加一个参数签名。比如可以在write_blog.php和user_login.php之间约定一个key,然后对回调的url根据key进行加密,产生一个checksum作为校验码。这样就可以保证回调url不被篡改了。当然,也可以约定一些接口,比如site_id=1时表示写博客,site_id=2表示下载......
上一页 1 2