`
sw1982
  • 浏览: 511281 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

慎防国际化中的language参数XSS注入

阅读更多

最近使用的xwiki又被安全中心眷顾了,扫描到一个新的xss漏洞。 由于xwiki是一个国外的开源论坛,做过国际化处理,支持多语言, 于是在页面上存在一些这样的代码:

 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="gwt:property" content="locale=en" />

 

注意这些编码串,全部是动态获取的,代码如下:

<meta name="gwt:property" content="locale=$!{context.language}"

 

于是,邪恶就诞生了!

?language="></script><script>alert()</script>&viewer=changes

 这段注入代码去http://platform.xwiki.org/xwiki/bin/view/DevGuide/DataModel?language="></script><script>alert()</script> 尝试过,该网站有做过处理,攻击不会成功。

 

但是自己下载的xwiki使用就要注意了,上面提到的动态取context.language则一定会被注入到很惨!特别是

/xwiki/templates/htmlheader.vm   这个公用的页头。

 

目前我的解决方案是,用xwiki提供的模板函数replaceAll来过滤特殊字符。<>/

<meta name="gwt:property" content="$!context.language.replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("/", " ")" />

 

 

下面也顺带把各种过滤条件都列出来,方便后期当手册翻阅:

html元素过滤字符集合

ignoreHtmlElementsTable.put('<', "&lt;");
ignoreHtmlElementsTable.put('>', "&gt;");
ignoreHtmlElementsTable.put('\'', "&#39;");
ignoreHtmlElementsTable.put('\"', "&quot;");
ignoreHtmlElementsTable.put('&', "&amp;");

 html属性过滤字符集合

ignoreHtmlAttributesTable.put('=', "&#61;");
ignoreHtmlAttributesTable.put('`', "&#96;");

 xml元素、属性过滤字符集合

ignoreXmlElementsTable.put('\'', "&apos;");

 

 

分享到:
评论

相关推荐

    在ASP.NET中防止注入攻击

    4. **使用SQL命令参数**:对于动态构建的SQL查询,使用参数化查询可以有效防止SQL注入攻击。 5. **验证ASP.NET的出错信息**:确保应用程序在发生错误时不会向客户端返回敏感信息,以防泄露有关应用程序结构的详细...

    360独家防注入跨站脚本攻击漏洞补丁php-asp-jsp

    防止JSP中的XSS攻击,可能涉及到使用EL(Expression Language)的`encodeForHTML()`或`encodeForJavaScript()`方法,以及对Servlet的请求参数进行验证。此外,JSP页面可能还需要正确设置Content-Type头,防止浏览器...

    防止XSS攻击xssProtect

    1. **antlr-3.0.1.jar**:ANTLR(Another Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。在XSSProtect中,ANTLR可能被用来解析和分析输入的数据...

    asp防漏洞代码

    为防止SQL注入,应使用参数化查询或存储过程,避免直接拼接SQL字符串。例如,使用ADO.NET时,可以使用`SqlCommand`对象的`Parameters`集合来传递参数: ```asp Dim conn As New SqlConnection("连接字符串") Dim ...

    WEB框架0day漏洞的发掘及分析经验分享.pdf

    1. SQL注入防护:许多框架提供了预编译查询或参数绑定的功能,如YII框架中的bindParam和bindValue,Hibernate框架中的预编译方式,以此防止SQL注入攻击。 2. XSS防护:框架如YII提供的CHtmlPurifier组件,可以清除...

    漏洞扫描代码

    2. **参数化查询**:推荐使用预编译语句和参数绑定,以防止SQL注入,但若代码中未使用,可能是潜在问题。 3. **输入验证**:代码应确保所有用户输入都经过适当验证,如过滤特殊字符、限制输入长度等。 4. **错误处理...

    jsp+servlet 增删改查

    在"jsp+servlet"实现的增删改查应用中,可能需要考虑SQL注入防护、XSS攻击防范、CSRF(跨站请求伪造)防御等安全措施。 综上所述,"jsp+servlet"实现的增删改查项目涉及到了Web开发中的许多核心概念和技术,包括...

    28论坛社区音吧0DAY

    2. **参数化查询**:使用参数化查询来构建SQL语句,以防止SQL注入。 3. **安全编码实践**:遵循安全编码的最佳实践,比如使用最新的框架和库,定期更新系统补丁等。 4. **代码审查**:定期进行代码审查,以确保代码...

    javaweb中的笔记

    了解基本的Web安全问题,如SQL注入、XSS攻击、CSRF攻击,并学习如何预防。 通过学习以上知识点,你将能全面掌握JavaWeb开发,逐步提升为大牛。记得理论与实践相结合,多做项目练习,才能真正消化吸收这些知识。祝你...

    PHP+SQL考勤系统安全性实现(源代码+论文+答辩PPT+指导书).zip

    使用预处理语句和参数化查询可以有效防止SQL注入,而对用户输入进行过滤和转义则有助于防御XSS攻击。 4. 用户认证与授权:考勤系统通常有不同级别的用户,如管理员和普通员工。开发者需要实现一套用户认证和授权...

    struts2 中文教程

    本教程“Struts2.0中文教程.chm”将深入探讨上述各个方面的内容,包括Action的创建与配置、结果的定义、拦截器的使用、国际化与本地化、文件上传下载、Ajax支持、异常处理等。它还将介绍如何集成Spring框架,以实现...

    计算机系毕业设计、php源码、PHP+SQL考勤系统安全性实现(源代码+论文+答辩PPT+指导书).rar

    - SQL注入防护:使用预编译语句或参数化查询避免SQL注入攻击。 - 密码存储:采用安全的哈希算法(如bcrypt或scrypt)存储用户密码,防止明文泄露。 - 访问控制:实施权限管理和角色分配,限制不同用户对系统的...

    利用html、css、javascript、php同时交互数据库制作的注册登录界面

    可以使用预编译语句或者参数化查询来避免SQL注入,对用户输入进行适当的转义和过滤。对于XSS,可以通过编码用户输入、禁用不安全的HTTP头或使用Content-Security-Policy来防御。 总之,这个项目展示了如何结合HTML...

    基于Java Web(Servlet)的电影售票管理系统.zip

    系统需要防止SQL注入、XSS攻击等安全问题。通过预编译SQL语句、使用PreparedStatement,可以有效防止SQL注入。对于XSS攻击,可以使用HTML编码或使用专门的过滤器进行防御。 8. 部署与运行: 项目部署通常需要...

    struts2框架设计的网上名片的管理系统

    Struts2提供了一些内置的安全拦截器,如Params拦截器进行参数校验,防止SQL注入;而XSS过滤则有助于防止跨站脚本攻击。开发者还需要关注CSRF(跨站请求伪造)防护,确保用户操作的安全性。 9. **国际化(i18n)**:...

    xml安全基础电子资源下载

    防止XML注入的方法包括使用参数化查询、对输入进行严格的验证以及使用XML解析器的安全模式。 二、XXE(XML External Entity)攻击 XXE是利用XML解析器允许引用外部实体的特性来执行攻击的一种手法。攻击者可以通过...

    员工管理系统源码

    在这个系统中,Struts2定义了控制器,处理用户界面与后台服务之间的交互,提供表单验证、国际化等功能,通过配置Action类和struts.xml文件来管理应用的请求路径和业务逻辑。 2. **Spring**:Spring框架是一个全面的...

    JSP流量统计系统  

    - **EL(Expression Language)**:用于简化从JSP页面中获取和设置Java对象的值,如 `${uid}` 可以获取请求参数。 2. **HTTP请求与响应** - **HTTP协议**:理解HTTP请求和响应的工作原理,特别是GET请求,如在...

    JSP+SQL基于WEB的开放性实验管理系统设计与实现(源代码+论文+开题报告+中英文献+答辩PPT).zip

    项目可能采用了预编译SQL语句、参数化查询等手段防止SQL注入,对输入数据进行过滤和转义以防止XSS攻击,同时利用令牌机制防止CSRF攻击。 7. **性能优化**:为了提升系统的响应速度和处理能力,可能涉及到数据库索引...

Global site tag (gtag.js) - Google Analytics