gpt4 book ai didi

java - 如何在 JCR SQL2 查询中转义动态生成的字符串值?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:32 24 4
gpt4 key购买 nike

假设我有一个 JCR 2 查询字符串,它是这样构成的:

String sql2Query = "SELECT * FROM [cq:PageContent] " +
"WHERE [aProperty] <> \" + aValue + "\"";

是否有我可以用来转义 aValue 的辅助方法?

顺便说一下,我已经知道在 SQL2 中我们可以使用占位符进行查询并让框架为我们转义值,但是如果我要动态创建此查询,我如何转义 aValue 以防止 SQL 注入(inject)以及构建损坏的查询?

最佳答案

是的,您可以使用占位符。即使是动态创建的查询也可以使用占位符。

至于SQL-2,需要用单引号,不能用双引号。示例:

SELECT * FROM [cq:PageContent]
WHERE [aProperty] <> 'Joe''s Taxi'

只需要对单引号进行转义,使用单引号转义字符:

String aValue = "Joe's Taxi";
String sql2Query = "SELECT * FROM [cq:PageContent] " +
"WHERE [aProperty] <> '" + aValue.replaceAll("'", "''") + "'";

如果要使用XPath,可以使用单引号或者双引号,但是通常也使用单引号(与 SQL-2 中相同)。路径查询目前不支持占位符。

关于java - 如何在 JCR SQL2 查询中转义动态生成的字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com