一。了解背景
下面两张图,比较html转义和js的转义。
一定要区分清楚的是,内容回写页面,一定要做的是JS转义!!而不仅仅是html转义
从上面两张图可以看出,js里面需要转义到的 单引号',反斜杠\ 均不在html转义字符之列!(如果针对XSS的话,只要对
<
>
'
")
二。<s:property value="xx"/>的稀烂之处
1.这个标签默认是带了html转义的,即完全等同于<s:property value="name" escape="true"/>
2.正确XSS防范做法,应该是后台转义后存储,也就是说存到DB里面的数据,就应该是处理过的!(这里的转义是html&js的综合体):
map.put('<', "<");
map.put('>', ">");
map.put('\'', "'");
map.put('\"', """);
map.put('&', "&");
在DB层无sql注入防范的时候,甚至需要是三位一体!
拿上面那个例子来说,用户输入name,DB应该存储下面的内容
<script>alert('xss')</script>
但是很不幸,这串字符使用s:property直接输出到页面上,会因为&符号又会促发一次html escape,导致显示问题
这里就只能继续恶心一把了,每个标签写上:<s:property value="name" escape="false"/> ,徒劳耗费键盘。(这种安全的内容回写比较推荐使用${name}的ongl方式直接输出)
三。严防死守
1.org.springframework.web.util.HtmlUtils, spring自带了一个类来处理,其本质需要注意,基于Char的过滤
看看源代码应该很容易理解
StringBuffer escaped = new StringBuffer(input.length() * 2);
for (int i = 0; i < input.length(); ++i) {
char character = input.charAt(i);
String reference = characterEntityReferences.convertToReference(character);
if (reference != null) {
escaped.append(reference);
}
else {
escaped.append(character);
}
a.使用String.replace(xx)的方式是搞不定的。举例来说,字符j的表示方式有下面15种之多:
\6A\06A\006A\0006A\00006A //java形式的16进制编码
jjjjj //十 进制编码
jjjjj //十 六进制编码
b.使用html的过滤方式也是99% OK的,但是像mhtml这样的漏洞,还需要过滤%0d%0a
c.指望过滤<>,过滤scrpit串这些明文,也是靠不住的。
附件是查资料找到的文档,包括:强烈建议一睹为快
1.浅析XSS(Cross Site Script:跨站式攻击)漏洞原理(转)
2.Ajax hacking with XSS
介绍了诸如此类的注入方式,属于眼界开阔篇
<img src="javascript:alert('XSS');">示例:
<img src="javascript:alert('XSS');"> //10进制转码 如图三
<img style="xss:expr/*XSS*/ession([code])"> //css的注释符号 为/**/,其中的内容会被忽略
<style>@im\port'\ja\vasc\ript:alert("XSS")';</style> //css中忽略的符号还有“\”
~~~~~~~~~~~~~~分割~~~~~~~~~~~~~~
p.s.
1.用Jquery的text()取"<script>alert('xss')</script>",会被直接读成<script>alert('xss')</script> 。
2. 这个串如果直接使用$("#xxyy").html()输出,会产生alert框。
3.正确的做法是使用innerHTML函数,可以避免字符串中js被执行:document.getElementById("xxyy").innerHTML=
- 大小: 53.1 KB
- 大小: 46.9 KB
- 大小: 5.2 KB
- 大小: 5.5 KB
分享到:
相关推荐
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
2. **高发频率**:由于传播所需的漏洞存在于超过80%的网站中,XSS蠕虫与病毒随时可能发生。 3. **传播速度**:它们的传播速度甚至超过了更为人所熟知的蠕虫病毒,如CodeRed、Slammer及Blaster。 4. **潜在危害**:...
XSS攻击和SQL注入是两种常见的网络安全威胁。XSS攻击指的是恶意用户将恶意脚本代码注入到网页中,当用户浏览该网页时,这些恶意代码得以执行。XSS攻击可以分为反射型、存储型和DOM型三种。反射型XSS攻击通常发生在...
本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。 配置struts.xml extends=struts-default,> <!-- 配置拦截器 --> <!-- 定义xss拦截器 --> 此处填写拦截器类名></interceptor>
1. **XSS防护**:Struts2内置了防止跨站脚本攻击(XSS)的机制,如自动转义输出内容。 2. **CSRF防护**:通过Token机制防止跨站请求伪造攻击,保护用户数据安全。 3. **权限控制**:Struts2的拦截器可以实现细粒度的...
11. **安全考虑**:Struts2虽然强大,但也需要注意安全性问题,例如XSS、CSRF等。开发者应确保对用户输入进行校验和过滤,使用安全的插件,及时更新Struts2版本以修补潜在的安全漏洞。 以上就是关于"留言板留言板...
它可能还会讲解如何调试Struts2应用,优化性能,以及安全问题,比如XSS和CSRF防护。 《Struts+2.pdf》: 书名中的"+"可能表示该书涵盖了Struts2的最新版本或与其他技术(如Spring、Hibernate)的结合。这可能涉及到...
- **增强安全性**:Struts标签库内置了安全机制,减少了XSS等安全风险。 **7. 学习Struts标签库的方法** - 阅读官方文档:Apache Struts官网提供了详细的标签库文档,解释了每个标签的功能、用法和属性。 - 实践...
9. **安全性**:理解防止SQL注入、XSS攻击等安全问题的重要性,以及如何在Struts2中实施相关防护措施。 10. **登录逻辑**:实现登录逻辑,包括用户名和密码的验证,以及登录失败后的反馈。 通过实践这个项目,...
在安全性方面,Struts2提供了一套安全相关的拦截器,如Parameters拦截器可以进行参数过滤和类型转换,防止SQL注入和XSS攻击。然而,Struts2也曾经因为某些漏洞而引发过安全问题,因此开发者在使用时需要注意及时更新...
我们可以通过使用Struts2的标签库(例如`s:property`、`s:form`等)来简化JSP页面的编写,这些标签能直接与Action中的属性进行交互,从而减少代码量并提高可维护性。 在课程设计中,网上书店可能包括以下几个主要...
- **创建JSP页面**:使用Struts2标签库,与Action进行数据交互。 6. **开发实践** - **Action的返回值**:Action执行后可以通过字符串返回值,决定跳转的Result类型。 - **OGNL表达式**:在视图层使用OGNL表达式...
Struts2是一个强大的Java Web应用程序框架,用于构建和维护可扩展、高效且易于维护的Web应用。它是Apache软件基金会下的一个开源项目,基于Model-View-Controller(MVC)设计模式,提供了高度灵活的控制层,使开发者...
- 视图部分通常使用JSP(JavaServer Pages)来呈现,Struts2提供了一系列标签库,如`s:form`、`s:textfield`等,简化了JSP页面的编写,提高了代码的可读性和可维护性。 7. **国际化与本地化**: - 商品展示系统...
使用Struts2的标签库(例如`s:textfield`,`s:password`,`s:submit`)可以使页面与Action类的属性绑定,方便数据传递。 5. **结果映射** 在`struts.xml`中,我们需要定义不同的结果类型,如成功(success)、错误...
- 使用Struts2时要注意安全问题,如SQL注入、XSS攻击等,合理使用Struts2的安全拦截器。 - 理解MVC模式的重要性,避免在JSP中编写过多的业务逻辑。 - 保持良好的编程习惯,如代码注释、命名规范等。 通过这个...
Struts1是一个经典的Java Web开发框架,其核心之一就是丰富的标签库,它简化了开发者在JSP页面上的工作。在本文中,我们将深入探讨Struts1的四个主要标签库:bean、logic、html和tiles,并重点讲解每个库中的关键...
下面是对Struts标签的详细描述: 1. **Struts标签库介绍** Struts提供了多个预定义的标签库,如`struts-bean`, `struts-html`, `struts-logic`, 和 `struts-tiles`,这些库帮助开发者在JSP页面中处理常见任务,如...