PHP使用随机变量来确认帖子是从我自己的文件发送的?

PHP使用随机变量来确认帖子是从我自己的文件发送的?,php,ajax,security,Php,Ajax,Security,当涉及到任何安全性、PHP或会话相关的问题时,我是一个彻头彻尾的noob,但我很好奇为什么这样做行不通 假设用户在一个php文件上完成表单,然后通过ajax将变量发布到另一个php文件。(我知道这是不安全的,因为攻击者制作的任何表单都可以从另一个源向该文件发布任何变量。)但假设您这样做: 1.php $ran = //generate randomized var $.ajax({ url : "2.php", type: 'POST' //send $ran to

当涉及到任何安全性、PHP或会话相关的问题时,我是一个彻头彻尾的noob,但我很好奇为什么这样做行不通

假设用户在一个php文件上完成表单,然后通过ajax将变量发布到另一个php文件。(我知道这是不安全的,因为攻击者制作的任何表单都可以从另一个源向该文件发布任何变量。)但假设您这样做:

1.php

$ran = //generate randomized var

$.ajax({
    url :  "2.php",
    type: 'POST'
    //send $ran to 2.php called random
})
<?php

require '1.php';

$random = $_POST['random'];

if ($ran != $random){
  die();
} 
else 
{

//continue...
2.php

$ran = //generate randomized var

$.ajax({
    url :  "2.php",
    type: 'POST'
    //send $ran to 2.php called random
})
<?php

require '1.php';

$random = $_POST['random'];

if ($ran != $random){
  die();
} 
else 
{

//continue...

当你谈论安全性时,你必须从攻击向量的角度来讨论它

如评论中所述,您上面提到的策略将减轻攻击,即用户的浏览器被操纵向您的站点提交他们不打算发送的请求

但是,如果用户正试图利用您的站点进行攻击,则您的nonce无效。例如,如果我登录到您的站点,并且我想尝试SQL注入攻击,我可以获取生成的nonce并将其与我选择的精心编制的请求一起提交


简言之,您描述的方法无法防止恶意用户向您的服务器发送任意请求。

您所指的是@eskimo OK!thanks@Scott它解决的漏洞是CSRF漏洞。