有很多地方APPScan在我的代码中抛出 Validation.required 错误,我在这里设置了一个对象。现在对象有两种设置方式:
A)
ExceptionBldr excepBuilder = (ExceptionBldr) session.getAttribute(SN_EXCEPBLDR);
这是我通过简单地对我从会话中获取的对象进行空检查来解决的。
B)
PageManager pm;
HttpServletRequest request = modelContext.getHttpServletRequest();
ResourceBundle resourceBundle = documentContext.getResourceBundle();
if (request.getAttribute("PageManager") == null) {
pm = new PageManager(modelContext, documentContext);
String title = resourceBundle.getString("Workbench.title");
if (title == null)
title = "";
pm.setPageTitle(title + " " + getInstance(request));
pm.setInstanceName(getInstance(modelContext.getHttpServletRequest()));
pm.setListingName(getListingName());
request.setAttribute("PageManager", pm);
我可以对所有参数进行空检查,然后在设置之前对完整对象进行空检查(我不知道如果这样可以解决问题)但是有更好的方法吗?我想为所有这样的实例编写泛型类。
部分想法:
a)验证对象是否属于有效类。
b)获取类的方法并迭代。
但是如何检查我正在设置的参数?
欢迎任何其他建议。
答案 0 :(得分:0)
而不是(或除此之外)进行空检查,减轻Validatoin.required发现的主要目标是验证恶意输入。检查代码是否可以将任何变量设置为可由恶意用户控制的值。任何来自系统外部的输入都应使用白名单进行验证:https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet#White_List_Input_Validation