SV.UMD.MAIN

当在 Web 应用程序、J2EE 应用程序以及小程序中检测到主方法时,将发生该错误。

漏洞与风险

在 Web 应用程序后面留下 main() 方法使得很容易通过后门来访问应用程序。Web 应用程序中的安全性设计趋向于不考虑主方法访问,因此这存在风险。

Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。

缓解与预防

在产品代码中移除所有主方法。

示例 1

复制
 public class SV_UMD_MAIN_Sample_1 extends HttpServlet {
     public void doGet(HttpServletRequest req,
                       HttpServletResponse res) throws ServletException,
                                                       IOException {
         res.setContentType("text.htm");
         PrintWriter out = res.getWriter();
         String name = req.getParameter("name");
         out.println("<HTML>");
         out.println("<HEAD><TITLE>Hello, " + name
                     + "</TITLE></HEAD>");
         out.println("<BODY>");
         out.println("Hello, " + name);
         out.println("</BODY></HTML>");
     }
     public String getServletInfo() {
         return "A servlet that knows "
                + "the name of the person to whom it's"
                + "saying hello";
     }
     private void work() {
         // test some code within our application
     }
     // leaving this around is unwanted once in production
     public static void main(String[] args) {
         SV_UMD_MAIN_Sample_1 ex = new SV_UMD_MAIN_Sample_1();
         // test that our code is working
         ex.work();
     }
 }

针对第 38 行报告 SV.UMD.MAIN:main() 方法定义提供了应用程序的入口点,请移除所有未使用的主方法。

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。