网站地图    收藏   

主页 > 后端 > 网站安全 >

Javascript中XSS的过滤 - 网站安全 - 自学php

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

[导读] 对于XSS的过滤,在很多网站中都是说,要过滤双引号,要过滤掉尖括号,这样就安全了。难道真的过滤了双引号和尖括号就完全安全了?在导入到Javascript中的变量中,XSS是有非常多方法...

对于XSS的过滤,在很多网站中都是说,要过滤双引号,要过滤掉尖括号,这样就安全了。难道真的过滤了双引号和尖括号就完全安全了?在导入到Javascript中的变量中,XSS是有非常多方法的,很多时候我们要根据具体的上下文来分析。而不是根据所谓的网上的一些通用方法来进行过滤,网上通用的方法在很多具体环境下都是漏洞百出的。
我们来看下面一个网上的例子:
http://xsst.sinaapp.com/example/test1-2-2.php?page=1
<style>
.code{border:1px solid #ccc;background:#ffff77;padding:10px;}
</style>
<pre>
<div class="code" id="test">
<a href="javascript:void(0);">这里只是测试用的链接..</a>
<a href="javascript:void(0);">这里只是测试用的链接..</a>
<a href="javascript:void(0);">这里只是测试用的链接..</a>
</div>
<script src="../jq.js"></script>
<script name="对面的妹子,看过来,看过来,看过来...">
try{
    var page=$('#test a[href="1"]');
    var b=document.cookie;
}catch(e){
 
}
</script>
 
<div class="code">在提交的参数中已经过滤了:
“, [, ] , \, <, >
如果是你的话,你会怎样想办法去绕呢,有人给出了一种绕过的方法,有奇效,居然是用加号来达到弹出的目的:
http://xsst.sinaapp.com/example/test1-2.php?page=’%2balert(document.cookie)%2b’
在使用加号做字符串连接的时候,中间的js会被执行,这个是之前好像没有怎么看到过的,能触发alert的操作绝对不止加号这一直,之前在其他文章中也看到过很多类似的技巧。因此在JS中,要过滤XSS,确实是一件比较麻烦的事情,因为需要考虑上下文的影响。
再看另一个:
http://xsst.sinaapp.com/example/test1-2-3.php?page=1
<style>
.code{border:1px solid #ccc;background:#ffff77;padding:10px;}
</style>
<pre>
<div class="code" id="test">
<a href="javascript:void(0);">这里只是测试用的链接..</a>
<a href="javascript:void(0);">这里只是测试用的链接..</a>
<a href="javascript:void(0);">这里只是测试用的链接..</a>
</div>
<script src="../jq.js"></script>
<script name="对面的妹子,看过来,看过来,看过来...">
try{
    var page='1';
    var b=document.cookie;
}catch(e){
 
}
</script>
 
过滤了:
”, <, >, eval, window, alert
这里的上下文又不同,alert和eval都不能用了,怎么办呢,我们可以看到在页面中引入了jquery,那么应该可以从jquery带的函数下手吧,然后再通过字符串拼接来绕过对于alert的过滤,使用下面的方法来绕:
http://www.2cto.com /example/test1-2-3.php?page=’%2bjQuery.globalEval(‘a’%2b’lert’%2b’(document.cookie)’)%2b’
用到了jQuery.globalEval来做执行,绕过了限制。因此,在XSS的过滤中,上下文确实非常重要,如果没有对于上下文正确的理解,很难做出正确的过滤。看来熟悉Javascript还是非常有用的,准备迟点好好看看Javascript,也可以用来改造博客什么的。

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

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

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

添加评论