java - Spring 数据 CRUD 方法

标签 java spring spring-data

我们使用 spring 数据,其重点是能够只使用提供的接口(interface)(例如 CrudRepository)而不必实际实现东西。

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

  • 从输入中转义非法 HTML 字符,例如 & < > "'
  • 防止sql注入(inject)

对我来说,最合乎逻辑的地方似乎是在我们所有 repo 协议(protocol)共享的通用数据库方法中的某个较高位置。但是由于它们没有在我们的代码中的任何地方实现,我不知道这是否已经在 spring 数据中实现。

最佳答案

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

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

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

请注意,HTML 只是您的数据可以采用的一种格式。如果您以后还需要生成 JSON 或 CSV,您将最终在数据库中混合使用不同格式的转义符。这是为什么转义不是 DAO 层的一部分以及为什么输出清理是到达这里的安全方式的一个明显原因。

关于java - Spring 数据 CRUD 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12400506/

相关文章:

Jackson 模块用于处理 Spring Data REST 中的抽象聚合根及其子类

在 Feign Client 中不支持 Spring Data Pageable 作为 RequestParam

Spring Redis - 主条目过期后未删除索引

java - eclipse中Maven插件错误

java - 实体没有表单对象所需的字段

java - "array initializer needs an explicit target-type"- 为什么?

java - 如何在 Spring 中使用依赖注入(inject)将类属性传递值分配给类构造函数?

java - Gradle-无法确定合适的驱动程序类别

java - 如何排除空指针异常?

java - 如何使用 Spring 3.0 表达式语言参数化 @Scheduled(fixedDelay)?