我正在寻找一种在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版本,这样我们就可以在手册上查看更新的解决方案:)