我们使用 spring 数据,其重点是能够只使用提供的接口(interface)(例如 CrudRepository)而不必实际实现东西。
我们已经意识到我们需要采取措施来确保我们的应用:
- 从输入中转义非法 HTML 字符,例如 & < > "'
- 防止sql注入(inject)
对我来说,最合乎逻辑的地方似乎是在我们所有 repo 协议(protocol)共享的通用数据库方法中的某个较高位置。但是由于它们没有在我们的代码中的任何地方实现,我不知道这是否已经在 spring 数据中实现。
最佳答案
您似乎在这里混合了两个截然不同的问题,所以让我们分别讨论它们:
在相应的 SQL-ish spring-data 实现中可以找到针对 SQL 注入(inject)的保护:JDBC 或 JPA;所以你不必担心。通用 API 不会公开与此相关的任何内容,仅仅是因为它是通用的,例如,当您使用 HBase 时,“SQL 注入(inject)”听起来真的很奇怪。
转义 HTML 内容是完全不同的事情,因为它涉及您的表示层,而不是您的数据层。因此,您可以在验证时转义输入,然后再将其发送到存储库,或者在之后当您想在 UI 中显示存储的数据时清理输出。
请注意,HTML 只是您的数据可以采用的一种格式。如果您以后还需要生成 JSON 或 CSV,您将最终在数据库中混合使用不同格式的转义符。这是为什么转义不是 DAO 层的一部分以及为什么输出清理是到达这里的安全方式的一个明显原因。
关于java - Spring 数据 CRUD 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12400506/