2010-07-19 141 views
3

如何检测客户端浏览器是否支持SSL?我没有将 指向服务器变量HTTPS_ *。如果浏览器没有SSL支持,我希望能够确定 。检测SSL浏览器支持

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

回答

1

所有浏览器都支持SSL(句点)。没有人会释放无法使用的浏览器。 HTTPS是安全性要求,除了OWASP A3:破坏性认证和会话管理。

+0

除了当然爬虫和其他类型的机器人可能没有:) – blowdart 2010-07-19 20:07:12

0

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

如果您没有无法通过SSL连接到特定页面的访问者,那么您通常可以使用服务器端方法,例如将它们重定向到他们被通知SSL要求的登录页面,或者您可以只是拒绝他们的网络请求。

+0

而且正如Rook所说,假设目前使用的大多数浏览器都支持SSL是合理的。如果他们不这样做,肯定有方法可以拒绝访问站点,包括服务器端和客户端。 – 2010-07-19 20:10:06

0

如前所述,现代Web浏览器没有理由默认禁用SSL。

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

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

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

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

0

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

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