我正在尝试创建一个游戏排行榜网站,其中包含人们在不同游戏中的高分。
我有 3 张桌子users
、games
和 gamedata
。
列如下。
-
users
: ID | 姓名 -
games
: ID | title | owner_id -
gamedata
: user_id | game_id | 高分
我有一个Javascript api,第三方游戏开发人员使用它在他们的游戏中创建一个submit score
按钮。
当他们向我发送数据时,我使用 $_POST
接收它们,并使用 " Insert into game_data(user_id, gameid, highscore) values('$_session['user_id']', '$gameid', '$score')"
在我的game_data
表中查询它
现在如您所知,任何人都可以向我发送$gameid
和$score
的虚假数据。
由于我无法控制服务器上的这两个数据,因此如何确保从第三方站点发送的数据的安全性?
确保安全是什么意思?
举个例子,我会:
1( 清理数据。作为一般规则,永远不要信任用户数据。
2( 通过查看数据库并检查$gameid
是否确实是表上存在的记录来验证数据。
3( 确保在可接受的范围内验证给定$score
。
4( 准备查询以避免 SQL 注入。
5(可选:使用SSL(您可以使用Letsencrypt获得免费证书(
6( 如果可以,将大部分逻辑移到服务器端。让客户端只发送操作,并在逻辑服务器端执行对数据和操作进行精细控制。