使用带有Query注解的spring data couchbase时如何防止sql注入?

问题描述 投票:0回答:1

我有控制器、服务、存储库类型的 Spring Web 项目,具有企业 couchbase 服务器作为数据库,我使用 spring-data-couchbase 来查询 couchbase 的数据,并且我使用 @Query Annotation 来放置自定义查询。

最近我遇到一个情况,我将 @Param String 名称作为方法参数。在其中一个请求中,我得到名称参数的值已转义双引号,这破坏了我的 couchbase 查询,这是一个复杂的查询,但其简单表示如下

@Query(
"""
#{n1ql.selectEntity} WHERE #{n1ql.filter}
AND name = "#{#name}" AND …
""")

→ 我想使用标准 owasp 库清理“#{#name}”中转义双引号的值,并且我不想执行自定义正则表达式操作。

参考。

https://www.couchbase.com/forums/t/how-to-prevent-sql-injection-when-using-spring-data-couchbase-with-query-annotation/39223

sql spring-data couchbase sql++ spring-data-couchbase
1个回答
0
投票

如果是“#{#name}”,请使用 $name(不带引号)。 使用 #{#name} 由 Spring SPEL 解析器处理,只是一个字符串替换。 $name(或$1)是一个n1ql查询参数,不可能进行sql注入。

© www.soinside.com 2019 - 2024. All rights reserved.