SV.UMC.JDBC

JDBC 2.0 API の新しい DataSource インターフェイスは、データソースへの優れた接続方法を提供します。DriverManager.getConnection(...) の呼び出しは避けます。

脆弱性とリスク

JDBC 1.0 を使用したデータベースマネージャによるデータベース接続の獲得および解放は、アプリケーションのパフォーマンスに影響を与えます。この影響は、データベースリソースマネージャーのプロセスによるオブジェクトの作成および破壊におけるオーバーヘッドが原因です。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

DataSource オブジェクトを使用したデータソース接続方法が推奨されます。

例 1

18     protected void doPost(HttpServletRequest req,
19                           HttpServletResponse resp) throws ServletException {
20         String name = req.getParameter("userName");
21         String pswd = req.getParameter("passwd");
22         Connection conn = doGetConnection(name, pswd);
23         // ...
24     }
25     private Connection doGetConnection(String name,
26                                        String pswd) {
27         Connection conn = null;
28         try {
29             return DriverManager.getConnection("localhost:3300",
30                                                name, pswd);
31         } catch (SQLException e) {
32             // ...
33         }
34         return conn;
35     }

SV.UMC.JDBC が 29 行目の呼び出しに対して報告されています。アプリケーションが DriverManager.getConnection() を直接呼び出すことは避ける必要があります。