4
Cross Site Scripting Cheat Sheet有许多防范XSS攻击的规则。我想在使用Spring MVC + Jackson + JPA + Hibernate Bean验证的Web应用程序中实现这些建议。作为一个例子,请考虑下面的代码,它类似于我在我的应用程序中的代码。如何用SpringMVC + Jackson应用程序防止XSS攻击?
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在每个控制器方法手动实现它们。
- 选项B配置一些扩展Spring MVC的,可以自动为我做
- 选项C配置杰克逊,以便它可以因为我的大部分输入的为我做的/输出通过杰克逊
我找的用SpringMVC任何这些三个选项的一些示例配置,与选项B和C的偏好
这是最简单的解决方案,我使用它与http://owasp-java-html-sanitizer.googlecode.com它工作得很好。 – ams