PHP:通过Javascript发布分数的安全方式

PHP : Secure Way to post Score Via Javascript

本文关键字:安全 方式 通过 Javascript PHP      更新时间:2023-09-26

i创建了一个php文件,该文件将更新数据库中的分数。例如:http://domain.com/heli/test.php?id=100001181378824&score=50000

Test.php包含以下代码

mysql_connect(localhost,$user,$password);
$id = mysql_real_escape_string($_GET['id']);
$score = mysql_real_escape_string$_GET['score']);
@mysql_select_db($database) or die( "Unable to select database");
$query = "UPDATE heli SET score = '$score' WHERE app = '$id'";
echo $query;
$result=mysql_query($query);
mysql_close();

我想知道如何通过Javascript安全地获取或发布请求到我的test.php。现在我已经创建了以下Js。

 var httpwp = new XMLHttpRequest();
 var urlwp = "http://domain.com/heli/test.php?id=100001181378824&score=50000";
 var paramswp = "id="+ids+"&score="+scores+";
 httpwp.open("GET", urlwp, true);
 httpwp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 httpwp.setRequestHeader("Content-length", paramswp.length);
 httpwp.setRequestHeader("Connection", "keep-alive");
 httpwp.send(paramswp); 

但是如何使用身份验证密钥等安全地发布或获取请求?

您永远无法确定客户端提交的数据。

为了让这更"安全",你必须在服务器上写一些关于分数计算的逻辑。

例如。假设你现在开始游戏,3秒后你提交1000分。这可能吗?

你必须创建一些步骤或限制,例如,如果玩家处于1级,分数不能超过100分,并且不能在1分钟的游戏前提交。等等

祝你好运。

1。首先,修复您的PHP代码,这样您就不会受到SQL注入的攻击。

2.接下来,通过https而不是http访问您的服务器。

3.添加一个php文件以接受对名称和密码的登录请求,该请求将返回一个唯一的会话密钥。(一个大的随机数就足够了,或者随机数据的sha1散列+请求中的一些数据)

4.将此号码与发布日期一起存储在服务器端数据库中。

6.在上传分数之前,让你的应用程序从该文件中获取会话密钥。

7.让你的分数保存php文件接受你的会话密钥和分数数据,并将其与数据库进行比较,看看它是否有效,是否太旧(检查发布日期)。

8.存储新的会话密钥,并将其与分数更新的结果一起返回,并从数据库中删除旧的会话密钥。

9.让你的js在以后的帖子中使用新的密钥,每次都从服务器上获得一个新的密钥。

10.在php应用程序中内置健全性检查,以检查荒谬和不可能的分数。还要检查是否得分过快。