Javascript 使用AJAX和非内联php制作web应用时的CSRF保护

Javascript 使用AJAX和非内联php制作web应用时的CSRF保护,javascript,ajax,Javascript,Ajax,我刚开始着手重建一个应用程序,让所有的php 通过AJAX ie访问,无需内联php,为使其成为 使用Phonegap的本机应用程序 我想知道的一件事是,目前该网站使用的是内联php 我使用随机字符串生成来确定调用是否来自 我的网站是为了避免CSRF,对吗 即 创建rand str 在会议上扔掉它 将它与任何AJAX调用一起发送,并检查它是否与会话中的调用匹配 当您不使用内联php时,这怎么可能呢?我必须 从第一个AJAX调用开始,在调用过程中用php创建一个rand str, 然后把它还给我

我刚开始着手重建一个应用程序,让所有的php 通过AJAX ie访问,无需内联php,为使其成为 使用Phonegap的本机应用程序

我想知道的一件事是,目前该网站使用的是内联php 我使用随机字符串生成来确定调用是否来自 我的网站是为了避免CSRF,对吗

创建rand str 在会议上扔掉它 将它与任何AJAX调用一起发送,并检查它是否与会话中的调用匹配 当您不使用内联php时,这怎么可能呢?我必须

从第一个AJAX调用开始,在调用过程中用php创建一个rand str, 然后把它还给我 将str存储在jsvar中 在下一个AJAX中发送回 检查它是否与会话中的匹配,如果匹配,则一切正常 创建一个新的randstr,并将其发送回AJAX,为下一步做好准备 AJAX调用 ?

如果以上所述是正确的,那么您如何知道第一个AJAX调用没有被黑客攻击


谢谢你的帮助。

你说的黑客是什么意思?我是新手,但据我所知,在会话中对每个表单调用进行随机字符串检查证明调用来自用户的计算机,而不是劫持会话的其他人的计算机。这是不对的吗?所以我想知道,你怎么知道他们从一开始就没有劫持会话?CSRF是关于确保提交的数据来自会话中通常呈现的最后一个表单,并且提交的数据不能重播。在显示表单之前获取令牌,然后确保该令牌是任何提交的一部分。你不能说更多了。我建议您阅读Ahh,这样就可以用javascript生成初始令牌,在第一个AJAX请求中将其发送到服务器,并将其保存在会话中,以便与后续请求进行比较,直到会话结束。我认为令牌必须首先在服务器端生成。不,永远不要在客户端生成令牌。始终在服务器端生成它,并在每次提交时用新的替换它