所以我有一个页面使用 html 页面中输入字段的 ajax 发布 json 数据。
ajax 发送到不同的服务器,服务器当前检查授权 header ,并将其与共享 key 进行比较,如果 key 匹配则执行 json 请求(请求通过 https 完成)。
我担心的是任何人都可以打开源代码并查看共享 key ,这意味着任何人都可以向我的服务器发送经过身份验证的请求(不好)。
然后我考虑改为加密 key ,但这又让我又遇到了第一个问题。
我无法从生成 html 页面的同一台服务器(在服务器端)执行 json 请求,因为它太慢了。我可以控制发送的内容,但不能控制发送的时间。
我正在使用 ajax 调用,因为我需要立即获取数据。
我如何创建一个恶意用户无法伪造的 token ,这样我就可以相信 json 请求来 self 期望它来自的服务器/页面?
最佳答案
在评论之后我更好地理解了你的用例:服务器 A 将响应一个 html 表单,在用户完成它之后,它会被提交给服务器 B。你如何确保发送到 B 的表单确实到来了来自 html 表单,而不是来自其他地方?
短期 token 而不是唯一 key 会更好,但是使用 nokogiri 或 jsdom 之类的东西,任何人都可以轻松解析您的表单并发出自动请求。
我认为像 Google reCAPTCHA 这样的验证码机制是你要找的。浏览器中的页面将使用公钥向验证码服务器请求验证码,用户必须从图像中输入这些字母,在他提交表单后,服务器 B 将使用密码验证该值。
关于javascript - 从 javascript 发送用于身份验证的共享 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21158082/