检测SSL浏览器支持

时间:2010-07-19 19:43:40

标签: c# javascript security encryption ssl

如何检测客户端浏览器是否支持SSL?我不是在推荐 到服务器变量HTTPS_ *。我希望能够确定 如果浏览器没有SSL支持。

P.S。我知道这是可能的,因为这家公司(http://www.cyscape.com) 有一个产品,甚至可以检测到你取消选择你的​​SSL支持 浏览器选项。

4 个答案:

答案 0 :(得分:1)

所有浏览器都支持SSL(句点)。没有人会发布一个无法使用的浏览器。 HTTPS是安全要求,与OWASP A3有关:破坏身份验证和会话管理。

答案 1 :(得分:0)

虽然检查服务器是否支持SSL连接相对容易,但检测浏览器支持是非常困难的。该解决方案可能需要客户端浏览器扩展,该扩展实现搜索浏览器配置或版本信息以获得SSL支持所需的逻辑。这个问题变得更加困难,因为扩展需要与多个浏览器一起使用。

如果您没有无法通过SSL连接到特定页面的访问者,您通常可以使用服务器端方法,例如将它们重定向到登陆页面,在那里他们会收到SSL要求的通知,或者您可以简单地否认他们的网络请求。

答案 2 :(得分:0)

如上所述,默认情况下,现代网络浏览器没有理由禁用SSL。

在SSL级别,当您为浏览器提供https链接时,您的服务器是否会收到连接?

在HTTP级别,您可以尝试通过HTTP分配会话cookie的各种方案,然后通过仅可通过HTTPS访问的链接更新一些会话变量。或者您可以在cookie上设置“secure”属性,并查看浏览器如何处理它。

您可以尝试使用JavaScript方法并检查window.location属性,或者尝试将其设置为https链接。 (或者使用LiveConnect尝试一些Java函数或者使用Flash做类似的事情。)

这个问题有什么特别的动机吗?如果您正在尝试确定浏览器的SSL支持,由于某些奇怪的原因没有启用SSL,那么cookie或JavaScript方法应该没问题。如果您正在尝试确定对抗浏览器的SSL支持(例如,不遵循robots.txt的机器人),或者您有更多理由不信任JavaScript等客户端检查,那么检查SSL可能不是很有用解决方案或您可能需要深入了解SSL握手是否与常见浏览器不同。

答案 3 :(得分:0)

检查客户端是否支持SSL将受到中间人攻击,其中活动网络攻击者获得对用户连接的控制并使其看起来好像客户端不支持SSL。 / p>

在开发针对可能不支持真实SSL(他们支持WAP-TLS)的旧手机的移动网站时,经常会问这个问题。此类别中的手机数量继续缩减,我的建议是忽略它们,甚至可能将其用户代理列入黑名单。