javascript - 保护 Web api 不被浏览器外部调用

标签 javascript api laravel security web-applications

也许我想多了。

我在浏览器中运行了一些简单的 javascript 游戏(拼图等),当用户获胜时,积分会根据他们完成游戏的速度发送到 laravel 后端。

当用户登录时,会创建一个典型的 session ,当通过 POST 请求发送积分时,csrf 和 JWT 也是如此。

用户是否可以打开 chrome 开发控制台并获取 url,然后复制 crsf、cookie 或 JWT,并将点数发送到后端,而无需实际玩游戏?

在浏览器外部调用的 API 不遵守 Access-Controll-Allow-Origin 策略。

谁能解释是什么阻止了用户这样做或如何阻止这种行为并确保用户真正玩游戏来赚取积分?

最佳答案

一种方法是按步骤安排游戏。即使用多个<form>元素。

初始页面将包含一个 <form>元素与游戏的一部分。

只有提交该表单时,服务器才会发送下一个 <form>元素到 document .

每个<form>具有 <input type="submit"> 的元素具有唯一标识符的元素;例如,时间戳,设置为 name属性并在服务器生成;在完成 <form> 所需的最长时间内到期在游戏过程中的那一步。

如果用户提交 <form>没有唯一标识符,或 <form> 的步骤在完成 <form> 所需的最长时间范围之外提交代表过程中的一个步骤,用户将被取消“赢得”当前游戏的资格,或者在未来给定的时间内玩游戏的资格。

关于javascript - 保护 Web api 不被浏览器外部调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39583449/

相关文章:

javascript - 如何从支持bean jsf调用javascript

android - 如何在 android 中创建日历的完整功能?

javascript - 当我的 API key 在 .gitignore 文件中时,如何从 git 部署到 heroku?

Android NDK API 列表?

php - 在 Laravel 中搜索两个数字(价格)

javascript - jquery find ('>' 的含义和用法)

javascript - 如何在 bsdatepicker 中禁用当前日期之前的日期

laravel - v-on :change event for radio input VueJS

javascript - 无限滚动显示重复结果

javascript - Node 查询字符串解析和字符编码。