【问题标题】:Security - Send data from third party to my server Ajax php安全性 - 将数据从第三方发送到我的服务器 Ajax php
【发布时间】:2016-05-27 15:33:37
【问题描述】:

我正在尝试创建一个游戏排行榜网站,该网站将包含人们在不同游戏中的高分。

我有 3 张桌子 usersgamesgamedata

列如下。

  • users : id |姓名

  • games : id |标题 | owner_id

  • gamedata : user_id |游戏ID |高分

我有一个 Javascript api,第三方游戏开发者使用它在他们的游戏中创建一个 submit score 按钮。

当他们向我发送数据时,我使用$_POST 接收他们并使用" Insert into game_data(user_id, gameid, highscore) values('$_session['user_id']', '$gameid', '$score')" 在我的game_data 表中查询它

现在你知道任何人都可以向我发送$gameid$score 的假数据。

由于我无法控制服务器上的这两个数据,如何确保从第三方站点发送的数据的安全性?

【问题讨论】:

  • 我如何在我的情况下使用它@morels?
  • 只需按照堆栈溢出示例。各种游戏都应该用自己的私钥对提交的数据进行加密,然后发布。您应该部署一个 php 服务器,在它侦听新的发布请求后,它会使用您的公钥解密消息并根据需要处理数据。这样您就可以确定提交者的身份。
  • 您无法阻止用户上传假分数。您可以添加混淆以减慢某些用户的速度,但最终完全防止作弊从根本上是不可能的。另一方面,您确实至少需要更改为使用参数化查询,因为您目前容易受到 SQL 注入的攻击,这是一个更严重的威胁。

标签: javascript php jquery ajax security


【解决方案1】:

确保安全是什么意思?

举个例子,我会:

1) 清理数据。作为一般规则,永远不要相信用户数据。

2) 通过查看数据库并检查$gameid 是否实际上是表中存在的记录来验证数据。

3) 确保在可接受的范围内验证给定的$score

4) 准备查询以避免 SQL 注入。

5) 可选:使用 SSL(您可以通过 Letsencrypt 获得免费证书)

6) 如果可以的话,将大部分逻辑移到服务器端。让客户端只发送操作,并在您对数据和操作进行精细控制的服务器端执行逻辑。

【讨论】:

    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2020-03-11
    • 2012-07-19
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多