3

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

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

  • 从输入中转义非法 HTML 字符,例如 & < > " '
  • 具有防止 sql 注入的保护

对我来说,最合乎逻辑的地方似乎是我们所有 repos 共享的通用数据库方法中的某个高处。但是由于它们没有在我们的代码中的任何地方实现,我不知道这是否已经在 Spring Data 中实现。

4

2 回答 2

9

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

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

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

请注意,HTML 只是您的数据可以交付的格式之一。如果您以后还需要生成 JSON 或 CSV,您最终将在数据库中混合不同格式的转义。这就是为什么转义不是 DAO 层的一部分以及为什么输出净化是安全的方式的一个明显原因。

于 2012-09-13T06:36:30.323 回答
0

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

您应该考虑使用:

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

在您的服务层

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

于 2014-01-25T22:21:46.937 回答