HTML和PHP的高分信息

时间:2013-11-11 23:46:33

标签: php html

我目前在我的网站上发布了一款JS游戏。我希望有一个HTML表单,它获取用户的名称并将其提交给服务器(仅保存在文本文件中)。目前,我可以使用PHP使网站/ game / scores.php?action = submit& name =“Player's Name”& score =“Player's Score”。我非常有信心这会奏效。但是,任何能够阅读我的HTML的人都可以将假分数传递给该功能。

我该如何解决这个安全问题?

注意:我知道SQL在这种情况下可能会更好用,但我对学习mySQL不感兴趣!

提前致谢。

编辑: 现在我有另一个问题。 PHP没有从表单获取POST参数。代码如下:

JS:

var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "http://michaelman.net/snake/scores.php");

var dataField = document.createElement("input");
dataField.setAttribute("type", "hidden");
dataField.setAttribute("name", name);
dataField.setAttribute("value", score);

form.appendChild(dataField);
document.body.appendChild(form);
form.submit();

PHP:

switch($_SERVER['REQUEST_METHOD']){
case 'GET': $the_request = &$_GET; echo "GTFO!";
case 'POST': $the_request = &$_POST; writeToFile($_POST['name'], $_POST['value']);
echo ("Saved: " . $_POST['name'] . " - " . $_POST['value']);
}

虽然服务器识别该请求,但它无法获取任何参数。这是为什么? 感谢。

编辑2: 抱歉愚蠢的编辑。我通过创建两个单独的表单字段来解决这个问题,一个用于名称,另一个用于得分。在PHP代码中,我只是检索“名称”和“得分”参数。

3 个答案:

答案 0 :(得分:1)

使用这样的表单标记:

<form action="scores.php" method="post">

然后,所有传递给scores.php的变量都可以这样访问:

$name = $_POST['name']; 
$score = $_POST['score'];

并且不会出现在网址的查询字符串中。

答案 1 :(得分:1)

如果您使用的是METHOD="GET",它会显示在网址中,并且是安全噩梦,但如果您使用的是METHOD="POST",则它将不会显示且更安全。

请参阅链接herehere

答案 2 :(得分:0)

您可以通过多种方式保护此应用程序。在不知道你的游戏性质的情况下很难准确地说出来但首先你应该使用POST方法而不是GET(这样url params将无法读取),但这仍然不是完全安全的,因为任何人仍然可以使用该脚本使用POST参数。

我建议在PHP本身中根据用户的不同操作计算分数。 E.G在国际象棋游戏中,你的后端应该知道哪些部分在哪里,如果用户拿一块然后后端知道,使前端非常愚蠢,只是更新UI以反映后端。