分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程

XSS攻击通常指的是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页的程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

如何防范XSS:

1、自己写filter拦截来实现。
这个filter不但可以拦截xss攻击,也可以拦截sql注入攻击。但要注意的时,在WEB.XML中配置filter的时候,最好将这个filter放在第一位。
我们知道filter谁的写在上面,谁先被过滤。比如我们有一个是否登录的过滤器如果放在上面,结果因为有漏洞,通过sql注入可以实现免登陆,而被黑客利用,导致了直接登录就麻烦了。所以要先过滤一些特殊字符,再放行去做其他业务。
这个过滤器里面可以匹配一些sql注入的关键字和一些xss攻击的关键字,xss攻击的关键字包括:script、alert、img、src、eval、javascript等关键字,拦截到后处理方法也有很多。
a、可以全部替换成空字符串,简单粗暴,但是可能造成错误显示。
b、可以转换成全角字符。
c、可以使用html实体编码,url编码等。
这要根据具体实际的情况来判断该怎么使用了。
filter过滤器使用相对麻烦,要建立一套完备的匹配库,否则有可能xss漏洞过滤不到,或者过滤的太多影响程序功能。但是filter可以根据自己程序实际情况随心定制。

2、ESAPI框架实现。
ESAPI是一套API级别的web应用解决方案。简单的说,ESAPI就是为了编写出更加安全的代码而设计出来的一些API,方便使用者调用,从而方便的编写安全的代码。
a、引入Jar。

<dependency>
    <groupId>org.owasp.esapi</groupId>
    <artifactId>esapi</artifactId>
    <version>2.1.0.1</version>
</dependency>

b、加入配置文件。
在工程的资源文件目录下增加配置文件ESAPI.properties及validation.properties,文件内容可为空。如果为空则都取默认值。也可以手动配置。
c、校验参数使用。
ESAPI提供了很多常见的校验,可以方便针对不同的需要做校验。

if(!ESAPI.validator().isValidInput("",input,"Email",11,false)){
    System.out.println("出错了");
}

这种方式:结构清晰,易于扩展。如果想省事,可以使用默认配置,也可以自己定制。

3、Spring实现。
首先添加一个jar包:commons-lang-2.5.jar,然后在后台调用这些函数。

StringEscapeUtils.escapeHtml(string); //转义html脚本
StringEscapeUtils.escapeJavaScript(string); //转义JavaScript脚本
StringEscapeUtils.escapeSql(string); //转义sql脚本

或者结合SpringMVC的InitBinder使用。
@InitBinder只在@Controller中注解方法来为这个控制器注册一个绑定器初始化方法,方法只对本控制器有效。

binder.registerCustomEditor(String.class, new StringEscapeEditor()); //告诉Spring:String类型的参数由StringEscapeEditor来处理了。

使用简单方便,但是不能定制过滤方式。