抱歉我的英语不好。
我的代码中有一小部分从Servlet获取值并显示它。
<form method="post" action="rent">
<div class="card-body">
<h4 class="card-title">Office Number: ${o.id}</h4>
<input type="hidden" value="${o.id}" name="officenumber">
</div>
</form>
为了能够获取该值并将其发送到另一个servlet,我使用隐藏类型的输入。然后,我在我的servlet中捕获它
int officenumber = Integer.parseInt(request.getParameter("officenumber"));
RequestDispatcher rd;
request.setAttribute("officenumber ", officenumber );
rd = request.getRequestDispatcher("/rent.jsp");
rd.forward(request, response);
然后我在一个新的JSP中展示它。问题是每个人都可以使用&#34; Inspect Element &#34;工具,从我的隐藏输入中更改值,并将发出新插入的值。
无论如何要避免这种情况?提前致谢。
答案 0 :(得分:1)
这就是为什么你不应该依赖来自客户端的元素。 必须在服务器上进行验证。 我建议阅读将登录用户的ID放在会话上, 当收到请求时,您需要确保office-id属于该用户,并且该用户有权更改/删除它。
答案 1 :(得分:1)
您绝对应该在服务器端存储“隐藏输入”,并且不应让用户将该值发送给您。如果由于某些原因需要用户发送值,则应对用户(登录名,密码,引脚或任何方法)进行身份验证,然后验证提供给您的值。
答案 2 :(得分:0)
在这种情况下有XSS攻击的可能性。您可以做的是在客户端为名为officenumber
的参数提供文本编码。稍后在服务器端解码该文本。
您可以根据自己的要求应用OWASP cheat sheet中的规则。
通过执行此操作,即使在客户端更改了值,也不会损害/破坏服务器端代码。
注意:任何人在提交表单之前都会更改表单输入参数的值,因此开发人员有责任为表单/应用程序提供安全性。