- 浏览: 1064098 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问题有两个思路:
在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原
在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的<c:out>标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function () {
return this.replace(/&/g, ‘&’).replace(/>/g, ‘>’).replace(/</g, ‘<’).replace(/”/g, ‘"’);
}
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() { super(); }
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;
}
@Override
public void setAsText(String text) {
if (text == null) {
setValue(null);
} else {
String value = text;
if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }
}
@Override
public String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }
}
在使用StringEscapeUtils时需要注意escapeHtml和escapeJavascript方法会把中文字符转换成Unicode编码,如果通过<c:out>标签或者EL表达式展示时,能够正确还原,但是如果使用类似于Ext这样的前端组件来展示这部分内容时,不能正常还原,这也是我为什么放弃了第一种方法,直接使用第二种方法的原因。
在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。
下面我们在@Controller中注册@InitBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringEscapeEditor(false, false, false));
}
这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。至此第二种方法完成,但是在还原的方法暂时还没有。O(∩_∩)O…
在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原
在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的<c:out>标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function () {
return this.replace(/&/g, ‘&’).replace(/>/g, ‘>’).replace(/</g, ‘<’).replace(/”/g, ‘"’);
}
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() { super(); }
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;
}
@Override
public void setAsText(String text) {
if (text == null) {
setValue(null);
} else {
String value = text;
if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }
}
@Override
public String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }
}
在使用StringEscapeUtils时需要注意escapeHtml和escapeJavascript方法会把中文字符转换成Unicode编码,如果通过<c:out>标签或者EL表达式展示时,能够正确还原,但是如果使用类似于Ext这样的前端组件来展示这部分内容时,不能正常还原,这也是我为什么放弃了第一种方法,直接使用第二种方法的原因。
在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。
下面我们在@Controller中注册@InitBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringEscapeEditor(false, false, false));
}
这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。至此第二种方法完成,但是在还原的方法暂时还没有。O(∩_∩)O…
发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 715参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1146package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 680Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1614Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
FieldRetrievingFactoryBean 和 MethodInvokingFactoryBean
2014-01-09 18:36 1019spring提供了filed的值注入和method的返回值注入 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12341在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
当spring 容器初始化完成后执行某个方法 .
2014-01-08 17:40 1443在某些应用中,我们希望,当spring 容器将所有的bea ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1214spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 931JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1313从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1435springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 930Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3221Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2582Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 979spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring JMS
2013-01-08 10:48 985http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3306给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1185NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 1003http://sosuny.iteye.com/blog/46 ... -
spring 3中新增的@value注解
2012-11-26 22:31 3381在spring 3.0中,可以通过使用@value,对一些如x ...
相关推荐
### Spring MVC 处理 XSS 和 SQL 注入攻击的方法总结 #### 一、引言 在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题...
防sql注入和xss攻击, springmv拦截器,可自由调整需要拦截的字符
在Spring MVC中防止XSS攻击的基本方法之一是通过实现过滤器来包装HttpServletRequest对象。具体地,需要创建一个包装类XssHttpServletRequestWrapper,用于覆盖HttpServletRequest的方法,对所有进入的请求数据进行...
同时,安全方面需要考虑防止SQL注入和XSS攻击。 7. **视图解析器**:设置ViewResolver,如InternalResourceViewResolver,用来根据逻辑视图名找到实际的视图资源。 8. **配置文件**:理解Spring MVC的配置文件,如...
在网络安全领域,XSS(Cross-Site Scripting)攻击是一种常见的威胁,它允许攻击者通过注入恶意脚本到网页上,来劫持用户会话、窃取敏感信息或执行其他恶意操作。SpringBoot是一个流行的Java微服务框架,而ESAPI...
9. **安全和性能**:项目中应考虑安全性问题,如输入验证、XSS和SQL注入防护,以及性能优化,如使用缓存、减少HTTP请求、优化数据库查询等。 综上所述,这个基于Spring MVC的JavaWeb项目涵盖了Web开发的多个核心...
**Spring MVC 源代码分析:后台登录系统验证** 在本文中,我们将深入探讨一个基于Spring MVC实现的后台登录系统验证的源...在实际开发中,还应考虑安全性,如使用HTTPS、防止SQL注入和XSS攻击,以及密码的加密存储。
XSS(Cross-Site Scripting)是一种常见的Web应用安全漏洞,允许攻击者注入恶意脚本到页面中。为了防止XSS,可以采取以下措施: 1. **使用安全的视图技术**:例如Spring MVC的`@ResponseBody`和`@ControllerAdvice`...
登录和注册功能需要考虑的安全问题包括但不限于:密码加密存储,防止SQL注入,XSS攻击防护,CSRF(跨站请求伪造)防御,以及合适的错误消息展示,避免泄露敏感信息。 7. **异常处理**: 使用Spring MVC的异常...
对于登录功能,还需要考虑安全措施,如CSRF防护、XSS防护和防止SQL注入。Spring Security是一个可选的组件,可以提供这些安全功能,但在这个简单的示例中可能并未涉及。 总结,"spring mvc 完整示例 前台+后台"项目...
5. **安全机制**:包括密码加密存储、防止SQL注入、XSS攻击等,确保系统安全。 在开发过程中,通常会结合Spring Security或Apache Shiro进行权限控制,利用MyBatis或JPA进行数据持久化,以及使用Bootstrap或其他...
在处理请求参数时,需要注意防止SQL注入、跨站脚本攻击(XSS)等安全问题。Spring MVC提供了一些内置的安全机制,但开发者仍需确保正确验证和清理输入数据。 10. **测试请求参数** 在单元测试和集成测试中,我们...
- 安全模块:用户密码加密、防止SQL注入和XSS攻击等。 5. **开发流程**: - 设计数据库模型,创建实体类并配置Hibernate映射。 - 编写控制器处理HTTP请求,调用业务逻辑服务。 - 实现业务逻辑,如商品查询、...
7. **安全性与优化**:在实际项目中,还需要考虑安全性问题,如防止SQL注入、XSS攻击等。同时,为了提升性能,可能需要对数据库进行索引优化,缓存热点数据,或者采用负载均衡等策略。 综上所述,本项目展示了如何...
7. 安全防护:防止SQL注入、XSS攻击等,确保系统安全稳定运行。 8. 日志记录:通过日志系统跟踪系统运行状态,便于问题排查和性能优化。 这个项目不仅涵盖了Web开发的多个核心技术,还涉及到用户体验设计、性能优化...
4. **Spring Security**:Spring Security是一个强大的安全框架,用于保护Web应用免受攻击,如未经授权的访问、XSS(跨站脚本)和CSRF(跨站请求伪造)。在这个项目中,Spring Security可能被用来确保只有经过身份...
1. Java基础知识: - 语法 ...- XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加得心应手。
在实际开发过程中,开发者还需要关注性能优化、安全防护(如防止SQL注入、XSS攻击等)、异常处理、单元测试等方面,以确保系统的稳定性和可靠性。同时,随着微服务架构的流行,也可以考虑将SSM系统拆分为更小的服务...
在开发过程中,需要考虑的关键点包括性能优化(如数据库设计、缓存策略)、安全性(防止XSS、CSRF攻击,保护用户数据)、扩展性(设计模块化、服务化,便于后期添加新功能)和用户体验(如页面加载速度、交互设计)...
- 安全性:防止SQL注入、XSS攻击,以及确保敏感信息的安全传输。 - 性能优化:缓存策略、数据库连接池的配置、合理使用索引等都是提升系统性能的关键。 - 日志记录:完善的日志系统有助于追踪和定位问题,对系统运行...