EN JP CN

SV.UMD.MAIN

SV.UMD.MAIN

このエラーは、main メソッドが Web アプリケーション、J2EE アプリケーション、アプレットで検出された場合に発生します。

脆弱性とリスク

main() メソッドを Web アプリケーションの背面に残しておくと、アプリケーションへのバックドアアクセスを簡単に許可します。Web アプリケーションのセキュリティ設計は、main メソッドのアクセスを考慮しない傾向があるため、危険を伴います。

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

軽減と防止

実稼動コードからすべての main メソッドを削除します。

例 1

15 public class SV_UMD_MAIN_Sample_1 extends HttpServlet {
16     public void doGet(HttpServletRequest req,
17                       HttpServletResponse res) throws ServletException,
18                                                       IOException {
19         res.setContentType("text/html");
20         PrintWriter out = res.getWriter();
21         String name = req.getParameter("name");
22         out.println("<HTML>");
23         out.println("<HEAD><TITLE>Hello, " + name
24                     + "</TITLE></HEAD>");
25         out.println("<BODY>");
26         out.println("Hello, " + name);
27         out.println("</BODY></HTML>");
28     }
29     public String getServletInfo() {
30         return "A servlet that knows "
31                + "the name of the person to whom it's"
32                + "saying hello";
33     }
34     private void work() {
35         // test some code within our application
36     }
37     // leaving this around is unwanted once in production
38     public static void main(String[] args) {
39         SV_UMD_MAIN_Sample_1 ex = new SV_UMD_MAIN_Sample_1();
40         // test that our code is working
41         ex.work();
42     }
43 }

SV.UMD.MAIN が 38 行目に対して報告されています。main() メソッド定義はアプリケーションのエントリポイントを与えます。 使用しない main メソッドはすべて削除します。