Xss攻击原理及防止办法简介

来源:互联网 发布:my sql has gone away 编辑:程序博客网 时间:2024/06/05 02:39

Xss攻击原理及防止办法简介

1 XSS原理

Cross Site Script(XSS),跨站脚本威胁。

XSS之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的"中括号", “单引号”,“引号” 之类的特殊字符进行编码。

恶意攻击者可以利用跨站脚本攻击做到:

1、盗取用户cookie,伪造用户身份登录;

2、让浏览者被迫执行某页面操作,以用户身份向服务器发起请求,达到攻击目的;

3、结合浏览器漏洞,下载病毒木马到浏览者的计算机上执行;

4、衍生url跳转漏洞;

5、让官方网站出现钓鱼页面;

6、蠕虫攻击。 

跨站脚本攻击有几种情形:

a、html属性位置

b、html标签内

c、javascript标签块内


2 测试条件

测试条件测试工具测试方法描述1、存在将用户的输入内容,输出到页面的情况浏览器 观察用户提交的数据,最终在页面中有展示XSS问题的本质是将用户的输入内容,未做处理,直接输出到页面,所以如果用户提交的数据最后没有返回到页面,没有在返回的response中原样输出,那就不需要测试XSS

3 防Xss攻击的方法

方法一:
编写代码将html字符转义,至少在输出的时候要进行转义。
    /**     * 转义标记以正常显示     *      * @param input     * @return String     */    public static String replaceTag(String input) {        StringBuilder filtered = new StringBuilder(input.length());        char c;        for (int i = 0; i <= input.length() - 1; i++) {            c = input.charAt(i);            switch (c) {            case '<':                filtered.append("<");                break;            case '>':                filtered.append(">");                break;            case '"':                filtered.append(""");                break;            case '&':                filtered.append("&");                break;            default:                filtered.append(c);            }        }        return (filtered.toString());    }

方法二:
使用Apache的工具类org.apache.commons.lang3.StringEscapeUtils;
    public static String filterHtml(String input, String[] excludeTags){        String escapeStr =  StringEscapeUtils.escapeHtml4(input);        if(ArrayUtils.isEmpty(excludeTags)){            return escapeStr;        }        // 不对excludeTags中的tag(如<br>)等进行转义        for (String excludeTag : excludeTags){            escapeStr = escapeStr.replaceAll(Pattern.quote(ESAPI.encoder().encodeForHTML(excludeTag)), excludeTag);        }        return escapeStr;    }    // 测试    public static void main(String[] args) {        System.out.println(filterHtml("<iframe onload=alert('店小弎')><br>",new String[]{"<br>"}));    }


0 0
原创粉丝点击