学习 xss

本文介绍了XSS跨站脚本攻击的概念、实现方式以及如何防止这种攻击。在Webx3.0框架中,通过默认的HTML转义机制可以有效防御XSS,但如果需要避免转义,可以使用#noescape()宏或配置noescape进行处理。
摘要由CSDN通过智能技术生成

前记

    web应用基于webx3框架,前端页面用velocity。在日常环境部署时,安全检测结果有css漏洞,并给出了解决方案。


1. XSS是什么? 

        XSS是 CrossSite Scripting的缩写,中文名称为跨站脚本攻击。

2. 如何实现XSS? 

        XSS是攻击者在Response中加入恶意脚本,脚本会在浏览器中执行,导致用户重要信息泄露。例如在服务器端的Screen java类里添加:

    Code_1: context.put("css","<script> alert(\"My FirstJavaScript\");</script>");   

那么浏览器就会执行这段js脚本,  弹出一个alert对话框


3. 如何防止XSS?

       Webx3.0框架对XSS攻击有很好的解决方案。在webx*.xml配置文件里,默认情况下对所有htm文件进行转义,只有在noescape里配置的不转义。 例如

  <plugins>
                <vm-plugins:escape-supportdefaultEscape="html">
                    <vm-plugins:noescape>
                       <vm-plugins:if-matches pattern="^control\." />
                       <vm-plugins:if-matches pattern="^screen_placeholder" />
                       <vm-plugins:if-matches pattern="^stringEscapeUtil\.escape"/>
                       <vm-plugins:if-matchespattern="^csrfToken\.(get)?hiddenField" />
                   </vm-plugins:noescape>
               </vm-plugins:escape-support>
   </plugins>


     由于Code_1 没有使用noescape,那么就会被webx3.0框架的防止XSS攻击处理,客户端得到的内容为:

  Code_2: &lt;script&gt;alert(&quot;My First JavaScript&quot;);&lt;/script&gt;
  说明:&lt;是<的转义符号,&gt;是>的转义符

     总结: Code_2不会被脚本引擎执行,因此CSS威胁解除。 浏览器的渲染引擎会把Code_2渲染为文字<script> alert("My FirstJavaScript");</script>

  防止XSS攻击的手段为:凡是到VM页面中的内容都会执行HTML escape转义处理,因此<script>将转义为&lt;script&gt;。然而浏览器中脚本引擎只会执行<script>中的 内容,对&lt;script&gt;中的内容置若罔闻,从而避免CSS攻击。&lt;script&gt;只会被html解释器翻译为<script>在页面中显示。

4.  如何避免转义?

     如果这段脚本不是有害脚本,不希望被转义该如何做呢?

    将不希望被转义的内容放置在宏#noescape()..#end中即可,例如#noescape()$css#end,在加载页面时alert("My First JavaScript");就会被执行。或者根据noescape的配置放置在$stringEscapeUtil(ingonreTxt)


5. XSS攻击过程


   图片来自这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值