如何通过身份验证将HTML表单提交到另一个域

时间:2011-05-25 21:13:19

标签: html forms authentication

我在域A上有一个网站,其中有一个带有html表单的页面,用户可以输入一个字符串,然后提交给域B.

表单当前包含一个隐藏的输入字段,其中包含域B用于“验证”/识别域A的名称/值。

现在,我主要是一名拥有最少网络经验的C#编码器,甚至我知道这不是一种安全的方法。

域A上的表单安全地提交给域B的最佳方法是什么?

我考虑过的一些方法:

让域B通过域名或IP识别域A.我想这会比隐藏的输入字段更好,但是域名和IP可能是欺骗性的,对吗?

让域A通过除隐藏字段之外的其他方法将身份验证凭据(例如用户/传递)传递给域B.不确定如何。

修改

另一种可能性:创建私钥/公钥。让域A将私钥传递给使用公钥验证的域B,可能通过HTTPS。不确定域A如何在不将其暴露在HTML中的情况下传递私钥。想法?

2 个答案:

答案 0 :(得分:2)

具有用于对用户进行身份验证的值的隐藏输入可以是一种安全方法,具体取决于值是什么以及如何生成。您可以让域A向域B发出AJAX调用,请求必须与表单一起提交的令牌。

此令牌只能由域B接受一次,并且在一定时间后也应该过期。

最后,您还可以发送用户的标识符。这应该以某种方式加密以进行传输。我建议使用HMACpublic key encryption

选项2:使用OpenID;)

答案 1 :(得分:1)

我过去做过类似的事情。大多数人都不喜欢这种方法,但它对我有用:

在两个域上定义匹配用户。给他们两个相同的密码(你应该把它设置为永不过期)。

然后,当您在域A中以该用户身份运行应用程序时,它将使用传递身份验证在域B上进行身份验证。您只需要确保用户帐户在两个域上都有正确的权限。