Java 表达式中的SQL注入保护

Java 表达式中的SQL注入保护,java,couchbase,n1ql,Java,Couchbase,N1ql,我试图使我的查询成为SQL注入的证据。我正在使用couchbase表达式构建带有用户输入的查询 private GroupByPath getSearchStatement(SearchParams searchParams) { String bucketName = asyncBucket.name(); Expression expression = x("sample_id").eq(s(searchParams.getSampleId()));

我试图使我的查询成为SQL注入的证据。我正在使用couchbase表达式构建带有用户输入的查询

  private GroupByPath getSearchStatement(SearchParams searchParams) {
        String bucketName = asyncBucket.name();
        Expression expression = x("sample_id").eq(s(searchParams.getSampleId()));
        String selectStatement = bucketName + ".*";
        return select(selectStatement)
                .from(bucketName)
                .where(expression);
    }

这段代码是SQL注入安全的吗?或者我必须做任何额外的事情。

代码看起来足够好,可以防止sql注入。参数化查询应该是另一种方法,并且对于准备好的查询更灵活

一个简单的例子是

N1qlQuery.parameterized(“从myBucket中选择*,其中sample_id=$1”,JsonArray.from(searchParams.getSampleId())


它可以是位置参数或命名参数。

在我看来,这不像Couchbase。@TimBiegeleisen是这样的
GroupByPath
是一个Couchabase Java sdk接口——从外观上看,这取决于是否正确转义输入。我会这么想,但这只是一个猜测。