最近使用的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("<", "<").replaceAll(">", ">").replaceAll("/", " ")" />
下面也顺带把各种过滤条件都列出来,方便后期当手册翻阅:
html元素过滤字符集合
ignoreHtmlElementsTable.put('<', "<");
ignoreHtmlElementsTable.put('>', ">");
ignoreHtmlElementsTable.put('\'', "'");
ignoreHtmlElementsTable.put('\"', """);
ignoreHtmlElementsTable.put('&', "&");
html属性过滤字符集合
ignoreHtmlAttributesTable.put('=', "=");
ignoreHtmlAttributesTable.put('`', "`");
xml元素、属性过滤字符集合
ignoreXmlElementsTable.put('\'', "'");
分享到:
相关推荐
4. **使用SQL命令参数**:对于动态构建的SQL查询,使用参数化查询可以有效防止SQL注入攻击。 5. **验证ASP.NET的出错信息**:确保应用程序在发生错误时不会向客户端返回敏感信息,以防泄露有关应用程序结构的详细...
防止JSP中的XSS攻击,可能涉及到使用EL(Expression Language)的`encodeForHTML()`或`encodeForJavaScript()`方法,以及对Servlet的请求参数进行验证。此外,JSP页面可能还需要正确设置Content-Type头,防止浏览器...
1. **antlr-3.0.1.jar**:ANTLR(Another Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。在XSSProtect中,ANTLR可能被用来解析和分析输入的数据...
为防止SQL注入,应使用参数化查询或存储过程,避免直接拼接SQL字符串。例如,使用ADO.NET时,可以使用`SqlCommand`对象的`Parameters`集合来传递参数: ```asp Dim conn As New SqlConnection("连接字符串") Dim ...
1. SQL注入防护:许多框架提供了预编译查询或参数绑定的功能,如YII框架中的bindParam和bindValue,Hibernate框架中的预编译方式,以此防止SQL注入攻击。 2. XSS防护:框架如YII提供的CHtmlPurifier组件,可以清除...
2. **参数化查询**:推荐使用预编译语句和参数绑定,以防止SQL注入,但若代码中未使用,可能是潜在问题。 3. **输入验证**:代码应确保所有用户输入都经过适当验证,如过滤特殊字符、限制输入长度等。 4. **错误处理...
在"jsp+servlet"实现的增删改查应用中,可能需要考虑SQL注入防护、XSS攻击防范、CSRF(跨站请求伪造)防御等安全措施。 综上所述,"jsp+servlet"实现的增删改查项目涉及到了Web开发中的许多核心概念和技术,包括...
2. **参数化查询**:使用参数化查询来构建SQL语句,以防止SQL注入。 3. **安全编码实践**:遵循安全编码的最佳实践,比如使用最新的框架和库,定期更新系统补丁等。 4. **代码审查**:定期进行代码审查,以确保代码...
了解基本的Web安全问题,如SQL注入、XSS攻击、CSRF攻击,并学习如何预防。 通过学习以上知识点,你将能全面掌握JavaWeb开发,逐步提升为大牛。记得理论与实践相结合,多做项目练习,才能真正消化吸收这些知识。祝你...
使用预处理语句和参数化查询可以有效防止SQL注入,而对用户输入进行过滤和转义则有助于防御XSS攻击。 4. 用户认证与授权:考勤系统通常有不同级别的用户,如管理员和普通员工。开发者需要实现一套用户认证和授权...
本教程“Struts2.0中文教程.chm”将深入探讨上述各个方面的内容,包括Action的创建与配置、结果的定义、拦截器的使用、国际化与本地化、文件上传下载、Ajax支持、异常处理等。它还将介绍如何集成Spring框架,以实现...
- SQL注入防护:使用预编译语句或参数化查询避免SQL注入攻击。 - 密码存储:采用安全的哈希算法(如bcrypt或scrypt)存储用户密码,防止明文泄露。 - 访问控制:实施权限管理和角色分配,限制不同用户对系统的...
可以使用预编译语句或者参数化查询来避免SQL注入,对用户输入进行适当的转义和过滤。对于XSS,可以通过编码用户输入、禁用不安全的HTTP头或使用Content-Security-Policy来防御。 总之,这个项目展示了如何结合HTML...
系统需要防止SQL注入、XSS攻击等安全问题。通过预编译SQL语句、使用PreparedStatement,可以有效防止SQL注入。对于XSS攻击,可以使用HTML编码或使用专门的过滤器进行防御。 8. 部署与运行: 项目部署通常需要...
Struts2提供了一些内置的安全拦截器,如Params拦截器进行参数校验,防止SQL注入;而XSS过滤则有助于防止跨站脚本攻击。开发者还需要关注CSRF(跨站请求伪造)防护,确保用户操作的安全性。 9. **国际化(i18n)**:...
防止XML注入的方法包括使用参数化查询、对输入进行严格的验证以及使用XML解析器的安全模式。 二、XXE(XML External Entity)攻击 XXE是利用XML解析器允许引用外部实体的特性来执行攻击的一种手法。攻击者可以通过...
在这个系统中,Struts2定义了控制器,处理用户界面与后台服务之间的交互,提供表单验证、国际化等功能,通过配置Action类和struts.xml文件来管理应用的请求路径和业务逻辑。 2. **Spring**:Spring框架是一个全面的...
- **EL(Expression Language)**:用于简化从JSP页面中获取和设置Java对象的值,如 `${uid}` 可以获取请求参数。 2. **HTTP请求与响应** - **HTTP协议**:理解HTTP请求和响应的工作原理,特别是GET请求,如在...
项目可能采用了预编译SQL语句、参数化查询等手段防止SQL注入,对输入数据进行过滤和转义以防止XSS攻击,同时利用令牌机制防止CSRF攻击。 7. **性能优化**:为了提升系统的响应速度和处理能力,可能涉及到数据库索引...