我目前正在处理需要根据输入动态创建的查询。基本上在我的数据库中,我存储了一堆键/值对的映射,查询是键/值对的映射,所有键/值对都需要匹配。
我已经找到了如何使用" $ param"将N1qlQuery.parameterized()与语句和占位符值一起使用,但这对于Expression.x中的字段名不起作用( " field")子句。问题在于,虽然我的字段值对于SQL注入是安全的,但是如果我只是将用户输入的字符串值放在那里,我的字段名称就会胜出。
如何在查询中转义动态构建的字段名称?
String fieldNameThatCanBeHacked = "fieldNameThatCanBeHacked";
Statement statement = Select.select("*").from(CouchbaseConfig.BUCKET_NAME).where(Expression.x(fieldNameThatCanBeHacked).eq("$param");