0

我目前有一个问题,即 actionform 的 validate 方法发生在 action 的 execute 方法之前。

这是一个问题的原因是用户可以提交他们自己的请求,如果他们所有必填字段都完成了验证通过并使用 isTokenValid(request) 方法,我可以看到请求无效。并将它们转发到“拒绝访问”页面。但是,如果他们没有完成伪造请求中的所有必填字段,则 validate 方法会返回错误,并将它们转发到实际页面 (.jsp) 并显示错误消息。

知道如何防止这种情况吗?

4

1 回答 1

0

要在 Struts1 中使用令牌实现 CSRF 预防,您不应允许直接访问您的 JSP 页面。

用户应该通过 Struts Actions 访问您的表单,并且该操作将在将它们转发到 JSP 页面中的表单之前调用 saveToken(request)。

在您通常直接转发到 JSP 的地方,您可以更改为转发到从 ActionForward 继承的操作。在执行过程中,它可以通过调用父 ActionForward 执行方法进行转发。您还可以在新的操作类中实现额外的逻辑限制。

这个在单独线程上对 Struts CSRF 问题的回答也可能有用: https ://stackoverflow.com/a/5339391/6136697

于 2016-09-07T20:35:42.850 回答