Spring数据CRUD方法

时间:2012-09-13 06:20:57

标签: java spring spring-data

我们使用spring数据,其全部内容是只能使用提供的接口(例如CrudRepository)而不必实际实现东西。

我们已经意识到我们需要采取措施来确保我们的应用:

  • 转义非法HTML字符,例如& < > “'来自输入
  • 具有针对sql注入的保护

对我来说,最合乎逻辑的地方似乎是在我们所有的repos共享的通用db方法中的某个地方。但是因为它们没有在我们的代码中的任何地方实现,所以我不知道这是否已经在spring数据中实现了。

2 个答案:

答案 0 :(得分:9)

你似乎在这里混淆了两个非常不同的问题,所以让我们分别讨论它们:

  1. 可以在相应的SQL-ish spring-data实现中找到针对SQL注入的保护:JDBC或JPA;所以你不必担心它。通用API不公开与此相关的任何内容,因为它是通用的,例如,当您使用HBase时,“SQL注入”听起来很奇怪。

  2. 转义HTML内容是完全不同的事情,因为它是您的表示层而不是数据层的关注点。因此,您可以在验证时转义输入,然后将其发送到存储库,或者在您想要在UI中显示存储的数据之后清理输出。

  3. 作为一个注释,HTML只是您的数据可以传递的格式之一。如果您以后需要也生成JSON或CSV,则最终会在数据库中混合使用不同格式的转义。这是一个明显的原因,为什么转义不是DAO层的一部分,为什么输出消毒是安全的方式。

答案 1 :(得分:0)

解决您对escapes illegal HTML characters such as & < > " ' from input

的疑虑

你应该考虑使用:

org.apache.commons.lang.StringEscapeUtils.escapeHtml(str) 

在您的服务层

有关此课程的更多信息,请参阅StringEscapeUtils JavaDocs