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() を直接呼び出すことは避ける必要があります。