最新公告
  • 欢迎加入中国站长资源网团队,精品资源持续增加!立即加入我们
  • 自用的JavaScript过滤XSS攻击方法

    广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪 广告!请自辨真伪

    什么是XSS攻击

    XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击。本来缩小应该是CSS,但为了和层叠样式(CasCADing Style Sheet,CSS)有所区分,故称XSS。

    对于攻击者来说,能够让受害者浏览器执行恶意代码的唯一方式,就是把代码注入到受害者从网站载的网页中。

    xss攻击的种类

    1、持续型XSS攻击:恶意脚本来源于网站的数据库

    我们来看这种攻击的一个场景

    1、攻击者过评论表单提交将<script>alert(‘aaa’)</script>提交到网站

    2、网站后端对提交的评论数据不做任何操作,直接存储到数据库中

    3、其他用户访问正常访问网站,并且需要请求网站的评论数据

    4、网站后端会从数据库中取出数据,直接返回给用户

    5、用户得到页面后,直接运行攻击者提交的代码<script>alert(‘aaa’)</script>,所有用户都会在网页中出aaa的弹窗

    这种攻击方式恶意代码会被存储在数据库中,其他用户在正常访问的情况下,也有会被攻击,影响的范围比较大

    2、反射型XSS攻击:恶意脚本来源于受害者的请求

    在一个反射型XSS攻击中,恶意文本属于受害者发给网站的请求中的一部分。随后网站又把恶意文本包含进用于响应用户的返回页面中,发还给用户。

    我们来看下面这个场景

    1、用户误点开了带攻击的url :http://xxx?keyword=<script>alert('aaa')</script>

    2、网站给受害者的返回中包含了来自URL的的恶意文本

    3、用户的浏览器收到文本后执行页面,会在网页中弹窗aaa

    反射型的攻击需要用户主动的去访问带攻击的链接,攻击者可以通过邮件或者短信的形式,诱导受害者点开链接。如果攻击者配合短链接URL,攻击成功的概率会更高

    3、基于DOM的XSS攻击

    基于DOM的XSS攻击是反射型攻击的变种。服务器返回的页面是正常的,只是我们在页面执行js的过程中,会把攻击代码植入到页面中

    JavaScript过滤XSS攻击方法

    var filterXSS=function(oriStr){
    if(!oriStr){
    return oriStr;
    }
    var charCodes=['3c','3e','27','22','28','29','60',{format:'script{}',chr:'3a'}];//要转义字符的16进制ASCII码[1<  2>  3'  4"  5(  6)  7`]
    var xssChars=[],filterChars=[],tmpFormat='{}',tmpChr;
    for(var i=0;i<charCodes.length;i++){
    if('string'==typeof charCodes[i]){
    tmpFormat='{}';
    tmpChr=charCodes[i];
    }else{
    tmpFormat=charCodes[i].format;
    tmpChr=charCodes[i].chr
    }
    xssChars.push(tmpFormat.replace('{}','u00'+tmpChr));
    xssChars.push(tmpFormat.replace('{}','%'+tmpChr));//1次encode
    xssChars.push(tmpFormat.replace('{}','%25'+tmpChr));//2次encode
    filterChars.push(tmpFormat.replace('{}','&#x'+tmpChr+';'));
    filterChars.push(tmpFormat.replace('{}','%26%23x'+tmpChr+'%3B'));//1次encode
    filterChars.push(tmpFormat.replace('{}','%2526%2523x' + tmpChr + '%253B'));//2次encode
    }
    for(var i=0;i<xssChars.length;i++){
    oriStr=oriStr.replace(new RegExp(xssChars[i],'gi'),filterChars[i]);
    }
    //预防script:
    oriStr=oriStr.replace(/script[u000du000au0020]+:/,'script:');
    return oriStr;

    如果遇到资源下载失效,请复制当前文章链接类型客服处理!
    中国站长资源网 » 自用的JavaScript过滤XSS攻击方法

    常见问题FAQ

    【点击查看】免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    【点击查看】提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    【点击查看】开通终身至尊下载源码 “不完整” 或 “不能用” 怎么办?
    非常抱歉,你有权利告诉本站,但是本站有选择处理或者不处理的权力,如无法接受请不要开通本站会员。
    【点击查看】开通终身会员能下载全站资源码?
    可以100%下载全站源码资源的,除部分失效资源,失效的可以联系客服尝试恢复。