在 JSP/Servlet 中安全地传递参数(无框架)
Securely passing parameters in JSP/Servlet (No Frameworks)
我们有一个 JSP 页面和一个 Servlet 页面,我们通过 URL 从 JSP 向 Servlet 传递参数。下面是JSPlink
<a href="OpenServlet?idClient=23">Allergies</a>
在我们的 servlet 中,我们进行如下处理。
int id = Integer.parseInt(request.getParameter("idClient"));
//Do the work
RequestDispatcher d = request.getRequestDispatcher("view.jsp");
d.forward(request,response);
不幸的是,这使得 idClient
100% 可见并且它也是可编辑的。我们注意到用户可以简单地从 URL 编辑 idClient
并访问其他客户端信息!不仅如此,任何人都可以访问任何人的信息,无论客户是否属于他们!
我们怎样才能阻止它?
获取登录用户。
检查该用户是否应该能够访问该客户的详细信息。
如果没有,return一个错误页面而不是客户详细信息页面。
在不了解您现有代码和数据库结构的详细信息的情况下,我无法提供更具体的信息。
我们有一个 JSP 页面和一个 Servlet 页面,我们通过 URL 从 JSP 向 Servlet 传递参数。下面是JSPlink
<a href="OpenServlet?idClient=23">Allergies</a>
在我们的 servlet 中,我们进行如下处理。
int id = Integer.parseInt(request.getParameter("idClient"));
//Do the work
RequestDispatcher d = request.getRequestDispatcher("view.jsp");
d.forward(request,response);
不幸的是,这使得 idClient
100% 可见并且它也是可编辑的。我们注意到用户可以简单地从 URL 编辑 idClient
并访问其他客户端信息!不仅如此,任何人都可以访问任何人的信息,无论客户是否属于他们!
我们怎样才能阻止它?
获取登录用户。
检查该用户是否应该能够访问该客户的详细信息。
如果没有,return一个错误页面而不是客户详细信息页面。
在不了解您现有代码和数据库结构的详细信息的情况下,我无法提供更具体的信息。