Lam*_*bda 3 java jackrabbit jcr jcr-sql2
让我假装我有一个像这样的JCR 2查询字符串:
String sql2Query = "SELECT * FROM [cq:PageContent] " +
"WHERE [aProperty] <> \" + aValue + "\"";
Run Code Online (Sandbox Code Playgroud)
是否有帮助方法可以逃脱aValue?
顺便说一句,我已经知道在SQL2中我们可以使用占位符进行查询,让框架为我们处理值的转义,但如果我要动态创建这个查询,我怎么能逃避aValue以防止SQL注入以及建立破碎的查询?
是的,您可以使用占位符.即使动态创建的查询也可以使用占位符.
对于SQL-2,您需要使用单引号,而不是双引号.例:
SELECT * FROM [cq:PageContent]
WHERE [aProperty] <> 'Joe''s Taxi'
Run Code Online (Sandbox Code Playgroud)
您只需要使用单引号转义字符转义单引号:
String aValue = "Joe's Taxi";
String sql2Query = "SELECT * FROM [cq:PageContent] " +
"WHERE [aProperty] <> '" + aValue.replaceAll("'", "''") + "'";
Run Code Online (Sandbox Code Playgroud)
如果要使用XPath,可以使用单引号或双引号,但通常也使用单引号(与SQL-2中的相同).XPath查询当前不支持占位符.
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |