1

Java Secure Coding に Appscan ソース版を使用しています。アプリケーションで SQL インジェクションが報告されています。問題は、クエリをコードで動的に生成しているため、準備済みステートメントを使用できないことです。代わりに、 e を使用する必要がありEsapi.encoder().encodeForSql(new OracleCodec(), query)ます。AppScan は、これを SQL インジェクションの問題を軽減するものとは見なしません。

final String s = "SELECT name FROM users WHERE id = " +
    Esapi.encoder().encodeForSql(new OracleCodec(), userId);            
statement = connection.prepareStatement(s);

このコードはさらに機能しませんESAPI.encoder()

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

あなたがすべきことは

final String s = "SELECT name FROM users WHERE id = ?"
statement = connection.prepareStatement(s);
statement.setString(1, userId);
于 2015-08-15T08:46:59.070 に答える