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攻击方法总结

原文地址:https://www.cnblogs.com/legendjslc/p/8279202.html

时间: 2024-09-28 17:53:14

java防范跨站脚本攻击(XSS)的相关文章

跨站脚本攻击XSS(二)——session劫持

转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍一种危害更大的XSS--session劫持. 神马是session 想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无状态的,也就是客户端向服务

[Web安全之实战] 跨站脚本攻击XSS

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points:   1. 认识XSS 2. XSS攻击 3. XSS防御(重点) 一.认识XSS先 先说个故事吧,在上一篇,我还想说这个案例.其实什么叫攻击,很简单.获取攻击者想要的信息,就黑成功了.抓到一个Tomcat漏洞(这不是我说的,一个认识的人说的),上传一个JSP,里面模拟HttpClient,下载一个木马,运行.OK,搞定了.所

跨站脚本攻击(XSS)

一.跨站脚本攻击的原理 1.XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的. 2.跨站脚本攻击的危害:窃取cookie.放蠕虫.网站钓鱼 ... 3.跨站脚本攻击的分类主要有:存储型XSS.反射型XSS.DOM型XSS 4.XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固

跨站脚本攻击xss学习

0.认识跨站脚本 举一个跨站脚本的简单例子. 假设一个页面将用户输入的参数直接显示到页面之中.(比如有如下代码) 在实际的浏览器中,在param中提交的参数正常会展示到页面之中.比如输入下面的URL: 然后发现浏览器页面的提供会变成这样: 此时如果提交下面的URL: 会发现alert被执行了 1.跨站脚本分类 跨站脚本攻击分为3类,反射型.存储型和DOM Based XSS. 1.反射型xss.浏览器执行一个不可信的脚本,并获得服务器的响应.通常黑客需要引诱用户点击恶意链接来进行触发. 2.存储

跨站脚本攻击XSS

跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的. 一个简单的留言板 我们有个页面用于允许用户发表留言,然后在页面底部显示留言列表 <!DOCTYPE html> <html> <head> <?php include('/components/headerinclude.php');?>&

网络安全-跨站脚本攻击XSS(Cross-Site Scripting)

一.XSS攻击简介 作为一种HTML注入攻击,XSS攻击的核心思想就是在HTML页面中注入恶意代码,而XSS采用的注入方式是非常巧妙的. 在XSS攻击中,一般有三个角色参与:攻击者.目标服务器.受害者的浏览器. 由于有的服务器并没有对用户的输入进行安全方面的验证,攻击者就可以很容易地通过正常的输入手段,夹带进一些恶意的HTML脚本代码.当受害者的浏览器访问目标服务器上被注入恶意脚本的页面后,由于它对目标服务器的信任,这段恶意脚本的执行不会受到什么阻碍.而此时,攻击者的目的就已经达到了. 下面我们

Java xss攻击(跨站脚本攻击)

发现问题 最近我们的服务器频繁的遭到黑客攻击,真是让人头疼啊,痛定思痛,仔细想想为什么我们会被攻击呢,肯定是我们的代码有漏洞啊,那么我们如何检测我们站点的漏洞呢,首先比较大众的就是通过360网站安全检测(http://webscan.360.cn/),但是发现这个太简单了,不够专业,那么我们再来一个专业的Acunetix Web Vulnerability Scanner,这个软件是收费的,但是我是一个穷人所以就不买了,请原谅.如果你也很穷请到这里下载试用,链接: http://pan.baid

JAVA覆写Request过滤XSS跨站脚本攻击

注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. 尤其是有富文本编辑器的产品.xss可能出现在http的head,不说别的,新浪多次出现. xss可以出现在post数据的正文.图片的url. 于是各种Xss横行,如今Xss跨站脚本漏洞的流行程度甚至超过了当年的sql. 那么对于JAVA语言,如何防御呢. 笔者分享一个思路:所有的web项目,所有的

《白帽子讲WEB安全》学习笔记之第3章 跨站脚本攻击(xss)

第3章 跨站脚本攻击(xss) 3.1 xss简介 恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的. XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆.故将跨站脚本攻击缩写为XSS. XSS本质就是HTML注入 XSS的分类: (1)     反射型XSS: 一个恶意构造了Web的URL (2)