spring-mvc - 如何使用 SpringMVC + Jackson Application 防止 XSS 攻击?

标签 spring-mvc xss security jackson

Cross Site Scripting Cheat Sheet有许多规则来防止 XSS 攻击。我想在我使用 Spring MVC + Jackson + JPA + Hibernate Bean 验证的 web 应用程序中实现这些建议。例如,考虑以下与我的应用程序中的代码类似的代码。

public class MessageJson {
    @NotEmpty // Bean Validation annotation  
    private String title; 

    @NotEmpty
    private String body; 

    // ... etc getters / setters
}

public class BolgPostController 
{ 
     
     @RequestMapping(value="messages",method=RequestMethod.POST) 
     public void createMessage(@Valid @RequestBody MessageJson message)
     {
           // **Question** How do I check that the message title and body don't contain 
           // nasty javascripts and other junk that should not be there? 

           // Call services to write data to the datababse
     }

     @RequestMapping(value="messages",method=RequestMethod.get) 
     public @ResponseBody List<MessageJson> createMessage()
     {
           // get data from the database 

           // **Question** How do I escape all the data in the list of MessageJson before 
            I send it back to the data. 
     }
}
我可以看到以下实现备忘单规则的方法:
  • 选项 A 在每个 Controller 方法中手动实现它们。
  • 选项 B 为 Spring MVC 配置一些可以自动为我完成的扩展
  • 选项 C 配置 Jackson 以便它可以为我完成,因为我的大部分输入/输出都通过 Jackson

  • 我正在这三个选项中的任何一个中寻找 SpringMVC 的一些示例配置,并优先选择选项 B 和 C。

    最佳答案

    在读取 JSON 时,最容易在属性的 setter 中执行此操作(例如 setTitle() 用于 title 属性)。

    或者,如果您正在考虑转义其他字符(例如,防止嵌入 HTML 标记),请查看此博客条目:escaping HTML characters in JSON with Jackson .

    关于spring-mvc - 如何使用 SpringMVC + Jackson Application 防止 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538227/

    相关文章:

    asp.net-mvc - 修复 ASP.Net MVC 中的跨站点脚本(反射(reflect))

    asp.net-mvc-4 - 使用 MVC Razor 进行输入清理 - 如何安全?

    javascript - 使用 DocumentFragment 和 innerHTML 通过富文本注释存储 XSS 预防

    php - 如何使用ajax和php发布密码?

    html - 如何使用基于浏览器的 S3 上传验证文件的内容?

    java - 无法从 Spring Boot Controller 获取 web.xml 中的上下文参数

    java - Spring MVC 中 Errors 对象的模型键是什么?

    java - 使用 Spring3 mvc 时出现 ajax 问题。返回对象列表时出现 406 错误

    spring - 使用 spring-java-config 设置 spring View 解析器

    asp.net-mvc - 在信息亭情况下登录的网络应用程序