SV.DATA.BOUND
在不完全受信任的存储(例如会话属性)中存储未验证的用户数据时,会发生该错误。
从 2023.2 版本开始,此检查器将支持 Jakarta EE。
漏洞与风险
getParameter() 之类的源始终被视为受到污染,而用户必须对其执行服务器验证。服务器验证包含从其他被视为安全的结构(例如会话属性或数据库)中读取数据。如果在此类结构中存储未检查的用户数据,则会面临出现其他漏洞的风险。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
在将用户数据输入可靠来源(例如数据库或会话属性)之前,先对其进行验证。
示例 1
复制
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("userName");
HttpSession sess = req.getSession();
sess.setAttribute("user", name);
}
针对第 18 行报告 SV.DATA.BOUND:在第 16 行的“name”中存储的未验证的用户输入现在存储在第 18 行的 HTTP 会话中。
外部指导
扩展
此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。