Java寻求引用者

时间:2010-04-09 14:44:47

标签: java jsp struts

我正在使用Struts和Java。问题是我有一个包含一些结果的页面。用户可以单击某个项目并进行编辑。我想在编辑用户后能够返回结果。返回没有被打破,但如果他提交表格进行更新,他将不得不单击2次,我认为可能有问题。

我尝试过header("Referer"),但这在Internet Explorer中无效。

我正在尝试实施解决方案。有任何想法吗?我的想法是保存网址并移动该网址的ID。当我想返回时,从ID获取URL。将其存储在会话中不是解决方案,因为用户可能已经打开了多个窗口。

2 个答案:

答案 0 :(得分:7)

将URL作为请求参数传递可能会产生安全问题。 Powerlord是正确的,USER可以改变引用者标题。这将允许用户访问页面,无论如何他们都可以做。更严重的是,遵循请求参数中的URL允许攻击者将用户发送到攻击者选择的页面,其外观是应用程序推荐此页面。因此,BalusC的答案可以启用跨站点请求伪造。

答案 1 :(得分:2)

最好的方法是将其作为请求参数传递。在编辑链接或按钮上,只需将当前URL作为请求参数传递。这是一个带链接的例子:

<a href="/login?from=${pageContext.request.requestURI}">edit</a>

如果是提交表单的按钮,则将其作为隐藏的输入值以相同的形式传递:

<input type="hidden" name="from" value="${pageContext.request.requestURI}">

在包含编辑表单的页面中,将其作为表单的隐藏输入值传递给后续请求:

<input type="hidden" name="from" value="${param.from}">

在操作方法中,只需在完成操作后重定向到该URL。由于我不做Struts,我不能给出一个详细的Struts示例,但是这里是你如何使用“普通vanilla”Servlet,你必须能够将它移植到Struts方法:

response.sendRedirect(request.getParameter("from"));