SV.UMC.JDBC

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

脆弱性とリスク

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

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

軽減と防止

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

例 1

コピー
     protected void doPost(HttpServletRequest req,
                           HttpServletResponse resp) throws ServletException {
         String name = req.getParameter("userName");
         String pswd = req.getParameter("passwd");
         Connection conn = doGetConnection(name, pswd);
         // ...
     }
     private Connection doGetConnection(String name,
                                        String pswd) {
         Connection conn = null;
         try {
             return DriverManager.getConnection("localhost:3300",
                                                name, pswd);
         } catch (SQLException e) {
             // ...
         }
         return conn;
     }

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