【发布时间】:2014-04-03 16:14:12
【问题描述】:
我有一个 PHP 应用程序,其中包含一些 jQuery 和 Ajax 功能。我想知道,如何在每个 Ajax 请求(不加载页面)时重新生成会话令牌(我发送它以验证 Ajax 请求)?
我在页面上有更多元素正在运行多个 Ajax 查询,但是此时它们都获得了相同的标记。因此,如果有人拥有密钥,我猜他们可以从另一个表单提交伪造的请求。
【问题讨论】:
标签: javascript php jquery ajax
我有一个 PHP 应用程序,其中包含一些 jQuery 和 Ajax 功能。我想知道,如何在每个 Ajax 请求(不加载页面)时重新生成会话令牌(我发送它以验证 Ajax 请求)?
我在页面上有更多元素正在运行多个 Ajax 查询,但是此时它们都获得了相同的标记。因此,如果有人拥有密钥,我猜他们可以从另一个表单提交伪造的请求。
【问题讨论】:
标签: javascript php jquery ajax
在客户端生成令牌没有意义。您不能信任来自客户端的任何内容,因为您不知道发送请求的是您的客户端软件还是恶意软件。 您必须创建尽可能多的令牌,因为您有可能的 ajax 请求,并在每个响应中返回一个新令牌。
【讨论】:
您应该在服务器端为每个用户或每个会话生成一个 CSRF 令牌。您可以将其存储在数据库或会话中。您应该将该令牌发送给您的客户端,然后通过 ajax 请求等待它返回。在您的网站不存在 XSS 漏洞之前,它将一直有效...
顺便说一句,保护您的应用程序的第一步是使用 HTTPS 协议...
【讨论】: