创建在Javascript和PHP之间使用的唯一代码的最简单方法


Easiest way to create a unique code to use between Javascript and PHP?

我正在寻找一种在JavaScript和PHP中创建相同代码的方法,作为一种安全措施,以确保您不能只访问PHP脚本,而是只有当JavaScript说要访问它时才能访问。

我正在使用AJAX访问PHP日志文件

var xhttp = new XMLHttpRequest();
xhttp.open('POST', 'log/', true);
xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhttp.send('uniqueCode=xxxxxxxx...');

(其中xxxxxxxx...是唯一代码。)

在PHP代码中,我想添加

if ($_POST['uniqueCode'] === xxxxxxxx...) {
    //Run Code
}else {
    http_response_code(403);
}

(其中xxxxxxxx...是唯一代码。)

有没有办法事先转移这个唯一的代码,然后使用上面的代码?

我使用的是PHP 5.6版

为了确保最终用户有某种权限做某事,您需要使用会话。为了更好的安全性,您需要使用https而不是http。这使得窃取会话密钥变得更加困难。与窃取会话密钥相比,从JavaScript中窃取随机代码是微不足道的。

这样做很简单。。。

<?php
start_session();
if($_SESSION['authorized']) // the user can do the secret stuff
else // the user cannot do the secret stuff

将用户设置为授权用户也很简单。。。

$_SESSION['authorized'] = true;

这就是它的全部。一旦你启动了一个会话,$_session数组中的变量就会与最终用户绑定。

从这个问题中,您可以使用这个函数

md5(uniqid('', true));

如果可能的话,请指定PHP版本,这样我们就可以在手册上查看更新的解决方案:)