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() 方法定义提供了应用程序的入口点,请移除所有未使用的主方法。