2010-05-19 96 views
0

构建应用程序,当我使用一个令牌,以防止对形式的攻击安全令牌问题请求

每一种形式呈现它得到一个新的ONE TIME安全令牌的时间,我包括形式为隐藏的领域。该令牌也存储在会话中。

当表单被发送时,会根据会话中的令牌验证令牌以确保表单是合法的。这对标准页面非常有用。

问题 使用Ajax发送表单时,可能有多个页面上,一旦你送的这些形式之一,令牌,然后换了别人作为一个一次性权无效。

有没有人有建议呢?还是足够安全,可以在每次会话中生成一个令牌,并且每次发送表单时都使用该令牌而不是使令牌无效?

+1

如果我在单独的选项卡中打开一些常规窗体,会发生什么情况?您是否一次在会话中保留多个有效令牌? – 2010-05-19 14:44:36

+0

这是一个非常好的问题,说实话,我试图找出如何做一次令牌,目前我的令牌对于会话很有用,我想你的问题指出,Ajax不是唯一的问题。 – 2010-05-19 14:50:31

回答

2

如果您想遵循您当前的方法,您可以在每次执行AJAX请求时生成一个安全令牌,并在AJAX响应中返回它,并在获取时将其注入隐藏。但是,我会重新考虑您当前的安全令牌方法。 Here你有一些关于OSWAP wiki的提示。

+1

http://csrf.htmlpurifier.org/ 您认为这是一个有效的解决方案吗? – 2010-05-19 15:49:29

+0

我不知道这个库,但似乎是一个不错的选择,谢谢你。在我看来,我不会去完成这项工作,最好将它委托给一个图书馆,如果需要的话,稍后再建立它。 – Matias 2010-05-19 17:32:36

+0

虽然您建议的库不会帮助您处理客户端表单/ ajax请求,因为它只是用PHP重写服务器端生成的表单。 – zcrar70 2011-10-13 18:43:08