`
123003473
  • 浏览: 1061798 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring MVC 如何防止XSS、SQL注入攻击

 
阅读更多
在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…
分享到:
评论

相关推荐

    Spring-MVC处理XSS、SQL注入攻击的方法总结

    ### Spring MVC 处理 XSS 和 SQL 注入攻击的方法总结 #### 一、引言 在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题...

    防sql注入和xss攻击, springmv拦截器

    防sql注入和xss攻击, springmv拦截器,可自由调整需要拦截的字符

    springmvc4配置防止XSS攻击的方法

    在Spring MVC中防止XSS攻击的基本方法之一是通过实现过滤器来包装HttpServletRequest对象。具体地,需要创建一个包装类XssHttpServletRequestWrapper,用于覆盖HttpServletRequest的方法,对所有进入的请求数据进行...

    Spring MVC简单例子

    同时,安全方面需要考虑防止SQL注入和XSS攻击。 7. **视图解析器**:设置ViewResolver,如InternalResourceViewResolver,用来根据逻辑视图名找到实际的视图资源。 8. **配置文件**:理解Spring MVC的配置文件,如...

    SpringBoot +esapi 实现防止xss攻击 实战代码,满满干货

    在网络安全领域,XSS(Cross-Site Scripting)攻击是一种常见的威胁,它允许攻击者通过注入恶意脚本到网页上,来劫持用户会话、窃取敏感信息或执行其他恶意操作。SpringBoot是一个流行的Java微服务框架,而ESAPI...

    基于Spring Mvc的JavaWeb项目

    9. **安全和性能**:项目中应考虑安全性问题,如输入验证、XSS和SQL注入防护,以及性能优化,如使用缓存、减少HTTP请求、优化数据库查询等。 综上所述,这个基于Spring MVC的JavaWeb项目涵盖了Web开发的多个核心...

    SixDay-Spring MVC(基于Spring MVC实现后台登陆系统验证)的源代码

    **Spring MVC 源代码分析:后台登录系统验证** 在本文中,我们将深入探讨一个基于Spring MVC实现的后台登录系统验证的源...在实际开发中,还应考虑安全性,如使用HTTPS、防止SQL注入和XSS攻击,以及密码的加密存储。

    Spring4.2.9+mybatis3.4.4集成(整合Jackson、防御XSS版)支持JDK1.6、Tomcat6

    XSS(Cross-Site Scripting)是一种常见的Web应用安全漏洞,允许攻击者注入恶意脚本到页面中。为了防止XSS,可以采取以下措施: 1. **使用安全的视图技术**:例如Spring MVC的`@ResponseBody`和`@ControllerAdvice`...

    Spring mvc简单的登陆注册功能

    登录和注册功能需要考虑的安全问题包括但不限于:密码加密存储,防止SQL注入,XSS攻击防护,CSRF(跨站请求伪造)防御,以及合适的错误消息展示,避免泄露敏感信息。 7. **异常处理**: 使用Spring MVC的异常...

    spring mvc 完整示例 前台+后台

    对于登录功能,还需要考虑安全措施,如CSRF防护、XSS防护和防止SQL注入。Spring Security是一个可选的组件,可以提供这些安全功能,但在这个简单的示例中可能并未涉及。 总结,"spring mvc 完整示例 前台+后台"项目...

    spring mvc应用之用户管理系统

    5. **安全机制**:包括密码加密存储、防止SQL注入、XSS攻击等,确保系统安全。 在开发过程中,通常会结合Spring Security或Apache Shiro进行权限控制,利用MyBatis或JPA进行数据持久化,以及使用Bootstrap或其他...

    Spring MVC--3.请求参数

    在处理请求参数时,需要注意防止SQL注入、跨站脚本攻击(XSS)等安全问题。Spring MVC提供了一些内置的安全机制,但开发者仍需确保正确验证和清理输入数据。 10. **测试请求参数** 在单元测试和集成测试中,我们...

    spring mvc + hibernate + spring 开发的糖果电子商务类整站源码可用于毕业设计

    - 安全模块:用户密码加密、防止SQL注入和XSS攻击等。 5. **开发流程**: - 设计数据库模型,创建实体类并配置Hibernate映射。 - 编写控制器处理HTTP请求,调用业务逻辑服务。 - 实现业务逻辑,如商品查询、...

    Spring,Spring mvc,Mybatis,material 前端框架开发简易BBS论坛系统

    7. **安全性与优化**:在实际项目中,还需要考虑安全性问题,如防止SQL注入、XSS攻击等。同时,为了提升性能,可能需要对数据库进行索引优化,缓存热点数据,或者采用负载均衡等策略。 综上所述,本项目展示了如何...

    基于ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目.zip

    7. 安全防护:防止SQL注入、XSS攻击等,确保系统安全稳定运行。 8. 日志记录:通过日志系统跟踪系统运行状态,便于问题排查和性能优化。 这个项目不仅涵盖了Web开发的多个核心技术,还涉及到用户体验设计、性能优化...

    基于 _Excel_ 的web的报表项目,使用spring mvc

    4. **Spring Security**:Spring Security是一个强大的安全框架,用于保护Web应用免受攻击,如未经授权的访问、XSS(跨站脚本)和CSRF(跨站请求伪造)。在这个项目中,Spring Security可能被用来确保只有经过身份...

    202305-Spring MVC面试题(2023最新版)思维导图.zip

    1. Java基础知识: - 语法 ...- XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加得心应手。

    基于SSM框架的后台管理系统框架(spring mvc,mybatis,mysql,easyui)

    在实际开发过程中,开发者还需要关注性能优化、安全防护(如防止SQL注入、XSS攻击等)、异常处理、单元测试等方面,以确保系统的稳定性和可靠性。同时,随着微服务架构的流行,也可以考虑将SSM系统拆分为更小的服务...

    Spring+Hibernate+SQL Server 电子商城

    在开发过程中,需要考虑的关键点包括性能优化(如数据库设计、缓存策略)、安全性(防止XSS、CSRF攻击,保护用户数据)、扩展性(设计模块化、服务化,便于后期添加新功能)和用户体验(如页面加载速度、交互设计)...

    管理系统系列--图书管理系统( Spring+Spring MVC+JdbcTemplate).zip

    - 安全性:防止SQL注入、XSS攻击,以及确保敏感信息的安全传输。 - 性能优化:缓存策略、数据库连接池的配置、合理使用索引等都是提升系统性能的关键。 - 日志记录:完善的日志系统有助于追踪和定位问题,对系统运行...

Global site tag (gtag.js) - Google Analytics