从javascript发送用于身份验证的共享密钥

时间:2014-01-16 09:36:21

标签: javascript authentication encryption

所以我有一个页面使用html页面中的输入字段的jax来发布json数据。

ajax发布到不同的服务器,服务器当前检查授权头,并将其与共享密钥进行比较,如果密钥匹配json请求被执行(请求通过https完成)。

我担心的是,任何人都可以打开源并查看共享密钥,这意味着任何人都可以向我的服务器发送经过身份验证的请求(错误)。

然后我考虑加密密钥,但这只会让我再次遇到第一个问题。

我无法从生成html页面的同一服务器(在服务器端)执行json请求,因为它太慢了。我可以控制发送的内容,但不会发送它。

我正在使用ajax调用,因为我需要立即获取数据。

如何创建令牌,恶意用户无法伪造,所以我可以相信json请求来自我希望它来自的服务器/页面?

1 个答案:

答案 0 :(得分:0)

评论之后我更了解您的用例:服务器A将以html格式回复,在用户完成后,它将被提交给服务器B.如何确保发布到B的表单实际到来来自html表单,而不是来自其他地方?

短暂的代币而不是唯一的密钥会更好,但使用像nokogiri或jsdom之类的东西,任何人都可以轻松地解析你的表格并自动提出请求。

我认为像Google reCAPTCHA这样的验证码机制正是您所寻找的。浏览器中的页面将使用公钥向验证码服务器请求验证码,用户必须从图像中键入这些字母,在提交表单后,服务器B将使用密码验证值。