情况如下:
用户登录Windows窗体应用程序,我们想要启动URL以在默认浏览器(IE,Chrome,Firefox等)中打开ASP.NET Web应用程序中的页面。我们希望将当前用户名/密码从Windows窗体应用程序传递到ASP.NET Web应用程序,以防止用户单独登录Web应用程序。
根据我们的研究,我们发现了一些选项(以及缺点):
所有这一切都是为了让用户不必两次输入用户名/密码来登录这两个应用程序。
上述哪个选项最适合(最安全,最少开销/维护)?
或
有没有办法在C#应用程序中创建可以由默认浏览器使用的表单身份验证票证(cookie?)?
或
有没有更好,更安全的方法来处理这个?
(编辑)
或
如果用户已经通过Windows窗体应用程序进行了身份验证,是否有理由要求用户再次输入用户名/密码来访问Web应用程序?如果是这样,你能提供参考链接吗?最佳实践,网络安全标准等。
答案 0 :(得分:2)
你可以加密+ MD5密码,只需用URL发送即可。
但是,您应首先指向服务器上的脚本,该脚本会对用户进行身份验证并创建相应的Cookie ,然后重定向到所需的页面,现在没有URL中的凭据。
编辑:或基本上做任何你想保留用户会话的内容
不幸的是,只要涉及密码,您就无法100%安全。尽管如此,如果有人可以获得密码的视觉效果,那么散列salted (salting is when you concatenate the password with some other string before hashing)密码可能是您最好的选择。
答案 1 :(得分:1)
除了MátéGelei所做的贡献之外,您还可以在Url中添加时间戳,并检查以确保时间戳在当前时间的几秒内。这是一个小小的附加保护,可确保登录尝试很快失效。当然,您可能希望以某种方式隐藏此目的,以使其更安全。
这不会使其100%安全,但它确实增加了一个级别的保护。