`

XSS攻击与防范小结

 
阅读更多

这篇博客的提纲如下:

一、故障梳理

二、故障解决方案

三、XSS小结

 

 

一、故障梳理

这要从最近出的一个故障说起。故障的过程大致如下:

数据流

 

A系统与B系统域名不同,A系统中的数据提交到A系统某个form表单,然后通过js函数提交到B系统后台,然后显示在B系统的IE浏览器上

这是整个数据流。

 

其中IE8开始,IE内置了XSS filter机制,当来源为跨站数据源,且数据源中含有疑似XSS攻击恶意数据(微软IE内置的正则来判断,例如,‘中文()’等)的时候,就会停止脚本的运行,直接跳转到空白页。

可以参考http://windows.microsoft.com/en-us/windows7/how-does-internet-explore-9-help-protect-me-from-cross-site-scripting-attacks   

 

本故障就是在A系统提交的数据中含有疑似XSS攻击的字符,导致IE误判,(别的浏览器都没事,IE就是个惹祸的怪胎。远离IE得永生!)无法将数据正确在B系统展示出来。展示了空白页。

 

二、故障解决方案

解决方案暂时想到的有两种:

1、在B系统的Response的Header里面加入标签X-XSS-Protection=0,阻止IE XSS filter生效。但是这样做有损系统安全性

2、在A系统提交的数据里面做XSS字符的过滤,将疑似XSS的字符从半角转换为全角字符。后面会有相应的代码实现

3、将数据的A系统进行彻底的编码(Base64等),然后在B系统进行相应的解码

 

这里选择方案2进行实现:

代码如下:

 

 public static String xssEncoder(String content){
        StringBuilder bulider=new StringBuilder();
        for(char c :content.toCharArray()){
            switch (c) {
                case '>':
                    bulider.append('>');// 全角大于号
                    break;
                case '<':
                    bulider.append('<');// 全角小于号
                    break;
                case '\'':
                    bulider.append('\\');
                    bulider.append('\'');
                    bulider.append('\\');
                    bulider.append('\'');
                    break;
                case '\"':
                    bulider.append('\\');
                    bulider.append('\"');// 全角双引号
                    break;
                case '&':
                    bulider.append('&');// 全角
                    break;
                case '\\':
                    bulider.append('\');// 全角斜线
                    break;
                case '#':
                    bulider.append('#');// 全角井号
                    break;
                case ':':
                    bulider.append(':');// 全角冒号
                    break;
                case '%':
                    bulider.append("\\\\%");
                    break;
                case '(':
                    bulider.append("(");
                    break;
                case ')':
                    bulider.append(")");
                    break;
                case ',':
                    bulider.append(",");
                    break;
                case '.':
                    bulider.append("。");
                    break;
                default:
                    bulider.append(c);
                    break;
            }
        }
        
        return bulider.toString();
    }

 

 

 

顺便提一下针对全站进行XSS防御的两种常用手段

1、配置Nginx的过滤正则脚本,对疑似XSS的脚本特征进行拦截

2、在系统配置拦截器,针对XSS数据进行清洗过滤,如http://my.oschina.net/hermer/blog/152834

 

三、XSS 小结

      这部分内容太多,做不好讲述。有很多web安全的书籍都讲得非常不错。这里就不泛泛而谈了

    

  • 大小: 23.8 KB
分享到:
评论

相关推荐

    Web安全之XSS攻击与防御小结

    总的来说,理解XSS攻击的原理、类型和防范措施对于保障Web应用程序的安全至关重要。开发者应时刻警惕用户输入,严格验证和过滤数据,同时利用编码和内容安全策略等技术,构建起坚固的防线,防止XSS攻击对用户的威胁...

    xss基本原理分析

    了解并防范XSS攻击对于保障Web应用的安全至关重要。开发人员需要时刻警惕潜在的XSS漏洞,及时修复以防止攻击者利用。同时,用户也应该提高安全意识,不轻易点击未知链接,避免在不受信任的网站上输入敏感信息。

    PHP和XSS跨站攻击的防范

    今天偶然看到PHP5的一个XSS漏洞,在此小结一下。顺便提醒,使用PHP5的朋友最好打下补丁,或者升级一下。 如果你不懂什么是XSS,可以看这里,或者这里(中文的也许会好懂一些)。 国内不少论坛都存在跨站脚本漏洞,...

    PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】

    PHP作为一种广泛使用的服务器端脚本语言,在防范XSS攻击方面也有诸多实用的函数和工具。本文将主要介绍PHP中用于移除XSS攻击的函数,以及进行UTF-8与GBK编码转换的方法。 首先,我们来探讨PHP中的函数用于移除XSS...

    Complete Cross-site Scripting Walkthrough

    ### 完整跨站脚本攻击(XSS)详尽指南 #### 引言 跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的网络安全漏洞,主要出现在...同时,对于用户来说,了解XSS攻击的基本原理及其防范措施也显得尤为重要。

    中科院张玉清—网络攻击与防御ppt课件:第8章Web攻击及防御技术

    本章的小结部分则强调了Web安全的复杂性和多面性,要求安全从业者持续关注最新的安全动态,及时更新知识和防御工具,以应对日益增长的Web攻击威胁。整体而言,Web攻击与防御技术是一项综合性很强的领域,需要综合...

    PHP常见的几种攻击方式实例小结

    虽然具体内容中没有对XSS攻击的实例进行详细展开,但可以了解其危害性之大,是Web安全领域不可忽视的一部分。 第三,文件包含漏洞是指Web应用中因不当的文件包含操作导致未授权的文件被读取或执行。具体来说,如果...

    Web安全深度剖析(张柄帅)

    《Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,更好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。...16.4 小结 345

    道网络安全面试题目共93道

    ### 小结 以上知识点涵盖了网络安全领域中常见的攻击方式及相应的防范措施,包括SQL注入攻击、XSS攻击、CSRF攻击、文件上传漏洞、DDoS攻击以及ARP协议的工作原理。通过对这些知识点的理解和应用,可以有效提升系统...

    PHP中字符安全过滤函数使用小结

    例如,对于来自表单的数据,可以使用`htmlspecialchars()`来防止XSS攻击,而对于数据库查询语句,应使用预处理语句或者`mysql_real_escape_string()`函数进行安全处理。同时,开发者应避免直接在数据库查询中使用...

    nginx cookie有效期讨论小结

    **Nginx Cookie有效期讨论小结** 在Web开发中,Cookie是用于在客户端存储和管理信息的一种机制。本文主要探讨了Nginx中Cookie的有效期设置及其安全性问题。Cookie的有效期直接影响用户会话的持续时间,合理的设置...

    Android Security Cookbook

    - **跨站脚本攻击(XSS)防范**:介绍XSS攻击类型及应对策略。 - **缓冲区溢出预防**:讲解缓冲区溢出的概念、危害以及如何避免此类问题。 ##### 5. 操作系统级别的安全 - **内核安全性**:探索Android内核的安全...

    JSP+ACCESS网上拍卖平台系统(源代码+论文)

    JSP可以通过预编译JSP页面、使用PreparedStatement来防止SQL注入,同时对用户输入进行验证和过滤,防止XSS攻击。 6. **性能优化**:对于大量用户并发访问的情况,可能需要考虑缓存策略,如使用Etag、Last-Modified...

    JAVA面试题总汇:j2ee面试知识.pdf

    - **Web应用安全:** SQL注入、XSS攻击、CSRF攻击的防范措施,以及安全头如Content-Security-Policy(CSP)的使用。 - **Java加密技术:** Java加密扩展(JCE)的使用,包括密钥生成、数据加密和解密、数字证书的创建和...

    利用软件工程原理提高开发效率.pptx

    - **安全漏洞防范设计**:采取措施防止常见的安全威胁,如SQL注入、XSS攻击等。 - **数据加密设计**:采用加密技术保护敏感数据的安全,如密码、个人身份信息等。 通过以上各章节的介绍,我们可以看到软件工程原理...

Global site tag (gtag.js) - Google Analytics