我有一个登录屏幕,我通过SSL服务.用户填写他们的登录名/密码,这将被POST到服务器.此时我想跳出SSL,所以我将它们重定向回没有SSL的同一页面.
这会导致浏览器显示警告对话框"您将被重定向到不安全的连接".我怎么能避免这个?我有很多网站,比如yahoo mail和gmail,它们为你提供了登录的SSL页面,然后在此之后将你发送到非SSL页面.
次要问题:这个对话的目的是什么?它试图警告我一些邪恶的目的 - 但将某人重定向到非SSL页面有什么不好?当我在SSL页面上并单击非SSL链接时,我不会收到警告.重定向某人有什么不同?
我在ASP.NET 2.0中这样做 - 但我认为这是一个通用的web-dev问题.
更新摘要:似乎流行的答案是"不要避免它".我可以理解,用户应该在删除安全性时收到消息.但是,当我关注链接并删除安全性时,我没有得到对话框,所以至少我会说这是不一致的.
对话框/浏览器版本.我实际上没有在IE7/FF3中看到对话框(也许我点击了一个阻止它的复选框).更重要的是客户端在IE6中看到它 - 没有复选框删除它(是的,我知道IE6是旧的和废话).
Firefox2:FF2 http://img521.imageshack.us/img521/8455/sslwarning.jpg
IE6:IE6 http://img188.imageshack.us/img188/139/sslwarningie6.jpg
替代方案:使整个站点成为SSL,永远不要将用户重定向到SSL之外.我能解决这个问题.但我有一个半技术客户,他有一些相当不错的观点:
"SSL将导致流量/处理能力的提高".我真的不买这个,我不认为他的网站每个都需要不止一个盒子来服务它.
"雅虎做到了.雅虎是一家大型技术公司.你比雅虎聪明吗?"
我将尝试将客户端转移到完全SSL站点.我认为雅虎的方法在1996年是有意义的,或者对于一个更受欢迎的网站而言.一些官方链接解释了为什么这个对话发生会有所帮助(即雅各布尼尔森的真实性水平).
我曾经遇到过同样的问题.所以我看看里面的小提琴手,看看雅虎邮件是怎么做到的.这是我看到的步骤(并在我的网站上使用):
用户填写SSL加密表单,并POST到服务器.服务器进行身份验证,并吐出一些脚本来重定向客户端
我认为客户端代码是为了避免这个对话框.
"我怎么能避免这种情况?"
你不应该!
虽然您可以尝试使用JavaScript.这可能适用于某些浏览器,而其他浏览器则失败.
"这个对话的目的是什么?"
它会发出警告,因为用户通常会在网站上切换SSL和非SSL.不会发出关于"非SSL到SSL"的警告,因为它增加了安全性和隐私性.但是,当安全性突然降低时,用户应该快速注意到,以避免错误的安全感.事实上,有时会在XSS/MITM攻击中使用重定向到非SSL站点.
"SSL将导致流量/处理能力的增加"
这是无稽之谈.对于充满大型静态内容的网站来说,这可能是真的.但是,对于普通的动态Web应用程序,与业务逻辑,数据库访问等相比,加密非常便宜.
有一个城市传说说SSL内容不受浏览器的限制.有关详细信息,请参阅" Web浏览器是否会通过https缓存内容 ".
"雅虎做到了.雅虎是一家大型技术公司.你比雅虎聪明吗?"
一些修辞反问题:
你是像雅虎这样的大型技术公司吗?
作为一家大型技术公司是否阻止微软生产蹩脚的软件?
您是否必须支持糟糕的旧(SSL破坏)浏览器,因为雅虎必须这样做?