我正在使用Ajax将JSON数据发送到我的服务器,以便解析php脚本。
例如这是将输出的JSON: http://myserver.com/parse.php?user=123&point=100&callback ......
和“parse.php”脚本将获取URL中的点并将其提供给用户id存储在user = 123中的用户。
但是,如果有人在浏览器上直接使用“http://myserver.com/parse.php?user = 123& point = 100& callback ......”而不让我的javascript启动它,他们可以欺骗他们的积分,他们可以在URL中设置他们喜欢的任何金额。
那么如何保护/验证JSON请求?
答案 0 :(得分:1)
如果您通过AJAX请求或类似的客户端传递用户点,那么您根本无法保护您的应用程序免受作弊。你的用户告诉脚本他/她得了100分,你怎么能确定这是公平的数字?传递您用于计算分数的初始数据,例如问题的有效答案或您正在测量的任何内容。
如果您的应用程序中有登录机制,则可以在执行脚本时检查服务器端的有效凭据,而无需通过GET
/ POST
实际传递用户标识符。 / p>
最后,在您的方法中,您可以检查AJAX标头和引用程序($_SERVER['HTTP_X_REQUESTED_WITH']
和$_SERVER['HTTP_REFERER']
)以确保请求来自您的JS代码,但这实际上只是一个小调整这容易妥协。此外,并非每个浏览器都传递引用标头(取决于隐私设置),因此可能会出现进一步的问题。
答案 1 :(得分:0)
要求用户登录以调用parse.php。如果请求未提供有效的会话ID,请拒绝采取措施。
答案 2 :(得分:-1)
不要在客户端放置任何游戏数据和逻辑。 永远不要相信客户。你总是必须计算服务器端。
更多信息(不依赖于链接标题,答案中有很多信息):https://gamedev.stackexchange.com/questions/3695/how-do-you-prevent-your-javascript-html5-web-game-from-being-copied-or-altered