【发布时间】:2017-11-27 07:09:35
【问题描述】:
我有用 PHP 编写的后端(实际上我想这并不重要)。 我有用 Javascript 编写的客户端,它在浏览器中启动。
应用程序以下列方式工作:
- 用户访问url地址并获取渲染数据的原始模板
- 通过 ajax,GET 查询被发送到后端服务器,查询填充原始模板的数据。响应以有效 JSON 形式返回。
这两个请求发生后,我可以打开控制台并重新发送最后一个 ajax 查询。我可以复制所有参数并轻松地从 JSON 中获取数据。
我对这种情况很不高兴。 我想以某种方式找出该查询来自应用程序。
我想在后端生成一些一次性令牌。在步骤1中将其交给客户。令牌只能使用一次。获取令牌后的客户端将立即使用它,因此使令牌对下一次查询无用。令牌的存活时间很短,因为第 2 步应该紧跟在第 1 步之后。
因此,下次如果将 ajax 查询发送到返回有关产品的基本信息的端点(步骤 2) - 将不会发回任何数据作为响应。
我并不是要 100% 保证查询没有被欺骗(我觉得这有点不可能,尽管我很高兴有这种可能性)。我想找一些方法让它更难被欺骗。拥有能在 80% 的情况下工作的锁总比没有锁要好,因为它需要更好的断路器资格。
我对我将要实施的方法的可行性有一些疑问。
我需要有关人们通常如何操作或一般想法的链接方面的帮助。实施对我来说不是问题。我能找到的 是“证书固定”,但不确定它对我的情况有何帮助。
肯定有人在我面前解决了这样的问题。 你知不知道怎么?有什么建议吗?
谢谢
【问题讨论】:
-
这么多
I's 和I'm's...我只能建议你在整个过程中添加一个 CSRF 令牌,如果数据是敏感的或者你不希望它被刮掉然后制作它们登录。 -
对不起,我不是本地人。这种措辞不好(您建议在哪里阅读有关好的措辞)? CSRF afaik 用于表单保护...
-
滚动 CSRF 令牌“样式”方法可用于“允许”基于先前请求的后续请求,因此设置令牌加载您的内容,设置一个新令牌,将其作为标头发送在下一个等等..如果您刷新相同的请求,令牌将是错误的..
标签: javascript php ajax security