我在域A上有一个网站,其中有一个带有html表单的页面,用户可以输入一个字符串,然后提交给域B.
表单当前包含一个隐藏的输入字段,其中包含域B用于“验证”/识别域A的名称/值。
现在,我主要是一名拥有最少网络经验的C#编码器,甚至我知道这不是一种安全的方法。
域A上的表单安全地提交给域B的最佳方法是什么?
我考虑过的一些方法:
让域B通过域名或IP识别域A.我想这会比隐藏的输入字段更好,但是域名和IP可能是欺骗性的,对吗?
让域A通过除隐藏字段之外的其他方法将身份验证凭据(例如用户/传递)传递给域B.不确定如何。
修改
另一种可能性:创建私钥/公钥。让域A将私钥传递给使用公钥验证的域B,可能通过HTTPS。不确定域A如何在不将其暴露在HTML中的情况下传递私钥。想法?
答案 0 :(得分:2)
具有用于对用户进行身份验证的值的隐藏输入可以是一种安全方法,具体取决于值是什么以及如何生成。您可以让域A向域B发出AJAX调用,请求必须与表单一起提交的令牌。
此令牌只能由域B接受一次,并且在一定时间后也应该过期。
最后,您还可以发送用户的标识符。这应该以某种方式加密以进行传输。我建议使用HMAC或public key encryption。
选项2:使用OpenID;)
答案 1 :(得分:1)
我过去做过类似的事情。大多数人都不喜欢这种方法,但它对我有用:
在两个域上定义匹配用户。给他们两个相同的密码(你应该把它设置为永不过期)。
然后,当您在域A中以该用户身份运行应用程序时,它将使用传递身份验证在域B上进行身份验证。您只需要确保用户帐户在两个域上都有正确的权限。