• java防范跨站脚本攻击(XSS)


    网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加filter对数据参数进行处理。

    1、在github上下载lucy-xss-servlet-filter:https://github.com/naver/lucy-xss-servlet-filter

    2、打开项目lucy-xss-servlet-filter,将下载代码输出为jar包.

          项目输出为jar包参见教程:http://blog.csdn.net/yahohi/article/details/6888559

    3、将生成的jar包和lucy-xss-servlet-filter引用的jar包放入漏洞网站的/WEB-INFO/lib目录或tomcat的lib目录。

    4、在漏洞网站的web.xml中添加对lucy-xss-servlet-filter的引用。

    ...
        <filter>
            <filter-name>xssEscapeServletFilter</filter-name>
            <filter-class>com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>xssEscapeServletFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    ...

    5、在classess目录下放入lucy-xss-servlet-filter-rule.xml 。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <config xmlns="http://www.navercorp.com/lucy-xss-servlet">
     3    <defenders>
     4        <!-- XssPreventer 등록 -->
     5        <defender>
     6            <name>xssPreventerDefender</name>
     7            <class>com.navercorp.lucy.security.xss.servletfilter.defender.XssPreventerDefender</class>
     8        </defender>
     9 
    10        <!-- XssSaxFilter 등록 -->
    11        <defender>
    12            <name>xssSaxFilterDefender</name>
    13            <class>com.navercorp.lucy.security.xss.servletfilter.defender.XssSaxFilterDefender</class>
    14            <init-param>
    15                <param-value>lucy-xss-sax.xml</param-value>   <!-- lucy-xss-filter의 sax용 설정파일 -->
    16                <param-value>false</param-value>        <!-- 필터링된 코멘트를 남길지 여부, 성능 효율상 false 추천 -->
    17            </init-param>
    18        </defender>
    19 
    20        <!-- XssFilter 등록 -->
    21        <defender>
    22            <name>xssFilterDefender</name>
    23            <class>com.navercorp.lucy.security.xss.servletfilter.defender.XssFilterDefender</class>
    24            <init-param>
    25                <param-value>lucy-xss.xml</param-value>    <!-- lucy-xss-filter의 dom용 설정파일 -->
    26                <param-value>false</param-value>         <!-- 필터링된 코멘트를 남길지 여부, 성능 효율상 false 추천 -->
    27            </init-param>
    28        </defender>
    29    </defenders>
    30 
    31     <!-- default defender 선언, 별다른 defender 선언이 없으면 default defender를 사용해 필터링 한다. -->
    32     <default>
    33         <defender>xssPreventerDefender</defender>
    34     </default>
    35 
    36     <!-- global 필터링 룰 선언 -->
    37     <global>
    38         <!-- 모든 url에서 들어오는 globalParameter 파라메터는 필터링 되지 않으며 
    39                 또한 globalPrefixParameter로 시작하는 파라메터도 필터링 되지 않는다. -->
    40         <params>
    41             <param name="globalParameter" useDefender="false" />
    42             <param name="globalPrefixParameter" usePrefix="true" useDefender="false" />
    43         </params>
    44     </global>
    45 
    46     <!-- url 별 필터링 룰 선언 -->
    47     <url-rule-set>
    48        
    49        <!-- url disable이 true이면 지정한 url 내의 모든 파라메터는 필터링 되지 않는다. -->
    50        <url-rule>
    51            <url disable="true">/disableUrl1.do</url>
    52        </url-rule>
    53        
    54         <!-- url1 내의 url1Parameter는 필터링 되지 않으며 또한 url1PrefixParameter로 시작하는 파라메터도 필터링 되지 않는다. -->
    55         <url-rule>
    56             <url>/url1.do</url>
    57             <params>
    58                 <param name="url1Parameter" useDefender="false" />
    59                 <param name="url1PrefixParameter" usePrefix="true" useDefender="false" />
    60             </params>
    61         </url-rule>
    62         
    63         <!-- url2 내의 url2Parameter1만 필터링 되지 않으며 url2Parameter2는 xssSaxFilterDefender를 사용해 필터링 한다.  -->
    64         <url-rule>
    65             <url>/url2.do</url>
    66             <params>
    67                 <param name="url2Parameter1" useDefender="false" />
    68                 <param name="url2Parameter2">
    69                     <defender>xssSaxFilterDefender</defender>
    70                 </param>
    71             </params>
    72         </url-rule>
    73     </url-rule-set>
    74 </config>

    6、重启tomcat测试网站,在参数中注入脚本不再提示XSS警告,而是直接出错。

    问题解决。这样的好处是不用改动原网站。

    参考:

    WEB安全实战(五)XSS 攻击的另外一种解决方案(推荐) - CSDN博客

    java(ssh)项目防止XSS攻击方法总结

  • 相关阅读:
    右滑返回上一页
    flutter 启动图
    [题解]NOIP2014
    [题解]LightOJ1289 LCM from 1 to n
    [题解]CodeForces442B Andrey and Problem
    [题解]HDU4035 Maze
    [题解]CodeForces#290(div1)
    SCP-bzoj-1078
    SCP-bzoj-1068
    SCP-bzoj-1054
  • 原文地址:https://www.cnblogs.com/legendjslc/p/8279202.html
Copyright © 2020-2023  润新知