我收到来自 Veracode 的信任边界违规。我的代码是
userName= req.getParameter(Constant.USERNAME);
session.setAttribute(Constant.USERNAME, userName); //At this line i am getting Trust Boundry Violation flaw.
如何验证userName
以避免违反信任边界的缺陷?
只需使用正则表达式根据您的用户名遵循的规则验证用户名:
if(userName.matches("[0-9a-zA-Z_]+")
session.setAttribute(Constant.USERNAME, userName);
VeraCode 将要求您向他们提交缓解措施。他们将安排与您的咨询,您可以在那里向他们展示已实施的代码修复,然后他们将标记缓解措施已批准。
是的,我知道这已经晚了,但其他人可能会绊倒,需要指出。
当用户输入设置到会话中时会发生信任边界冲突。使用此漏洞,攻击者可以将任何其他用户名设置为会话,并可能导致假冒。访问用户名的任何地方的代码session(session.getattribute)
都会赋予该用户的攻击者特权。
缓解:在将用户输入设置到会话之前,请确保设置到会话中的用户名是经过身份验证的用户。
使用验证您的数据 ESAPI.validator().getValidInput(...)
,然后将值设置为会话对象。