0

現在、入力に応じて動的に作成する必要があるクエリに取り組んでいます。基本的に、私のデータベースにはキーと値のペアの一連のマップが保存されており、クエリはキーと値のペアのマップであり、そこからすべてのキーと値のペアが一致する必要があります。

「$param」を使用してステートメントとプレースホルダー値で N1qlQuery.parameterized() を使用する方法を見つけましたが、これは Expression.x("field") 句のフィールド名では機能しません。問題は、フィールド値は SQL インジェクションから安全ですが、ユーザーが入力した文字列値をそこに入れるだけではフィールド名は安全ではありません。

クエリで動的に構築されたフィールド名をエスケープするにはどうすればよいですか?

    String fieldNameThatCanBeHacked = "fieldNameThatCanBeHacked";
    Statement statement = Select.select("*").from(CouchbaseConfig.BUCKET_NAME).where(Expression.x(fieldNameThatCanBeHacked).eq("$param");
4

0 に答える 0