我试图获得一个JavaScript函数来调用PHP函数来向我的Web服务器写入文本文件,以便我可以在不使用数据库的情况下为我的游戏存储简单数据。但是,这将允许随机的人从控制台调用该功能(通过按F12打开),并将文件写入我的Web服务器。将文件写入到Web服务器的安全方式
有什么办法解决这个问题吗?一切都错了吗?我必须从头开始吗?或者它是不可能的?
我当前的代码:
的test.html:
test
JS/php.js:
function getReq() {
var req = false;
if (XMLHttpRequest) req = new XMLHttpRequest();
else {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
return req;
}
function phpFunc(url, func, success) {
sfunc = func.split(")")[0].split("(");
rfunc = sfunc[0];
rparams = sfunc[1];
var req = getReq();
if (!req) return false;
req.onreadystatechange = function() { if (req.readyState == 4 && req.status === 200) success(req.responseText); }
req.open("GET", url + "?t=" + Math.random() + "&func=" + rfunc + "¶ms=" + rparams, true);
req.send();
}
function alertText(text) {
alert(text);
}
test.php的:
function write($text) {
$file = fopen("test.txt", "w");
fwrite($file, $text);
fclose($file);
}
{
$func = $_GET["func"];
$params = explode(", ", $_GET["params"]);
for ($i = 0; $i < count($params); $i++) {
if (is_numeric($params[$i])) $params[$i] = (int)$params[$i];
else $params[$i] = str_replace(array("\"", "'"), "", $params[$i]);
}
call_user_func_array($func, $params);
}
?>
另外英语不是我的第一语言,所以我不知道是否一切都输入正确。
+0
验证他们的身份,然后使用会话cookie和/或访问令牌。 –
+1
客户端没有安全性。无论您的代码在浏览器中做什么,都可以在控制台中进行复制,但程度不同。有一些事情可以使它变得更加困难(访问令牌,如@chRyNaN所说),但最终,您的代码已显示出来,并且可以出于任何目的随意修改。唯一的万无一失(但是很昂贵)的方式是让所有的后果都发生在服务器上,就像一些MMO一样。 –
+0
@Amadan是对的。所有需要安全的代码都应该在服务器上执行。访问令牌仅用于验证服务器上的用户身份,以便决定是否执行任务。 –