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