如何判断网站是否使用SSL

时间:2012-05-24 07:59:47

标签: security ssl xulrunner

我开发了一个独立的XULRunner应用程序,我将其用作浏览器。我没有在应用中显示网址。但我想告诉所访问的网站是否使用SSL(即URL以https://开头)。如果用户所在网站的部分是安全的,我想向用户显示一条消息。而且,我想这样做的方法是检查URL是否使用SSL。我做了一些搜索但到目前为止没有成功,但我还没有放弃。任何建议都将受到高度赞赏。

我做了一些更改,现在我的onSecurityChange()方法如下所示。

onSecurityChange: function(aWebProgress, aRequest, aState) { 
  if((aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE) == 0) {
    document.getElementById("lblConnectionStatus").setAttribute("value", "Insecure Connection");
  } else {
    document.getElementById("lblConnectionStatus").setAttribute("value", "Secure Connection");
  } 
  return 0; 

}

但是,当我从不安全页面转换到安全页面时,它似乎没有改变。我已经尝试过使用Yahoo和Hotmail来查看问题是否与我正在访问的应用程序有关,但是,它的行为也一样。

任何关于我可能做错的指针?提前谢谢。

1 个答案:

答案 0 :(得分:1)

它有点复杂 - 即使页面本身是通过SSL加载的,它也可以嵌入通过纯HTTP加载的脚本。这意味着整个页面安全,因为不安全的脚本可能会破坏其他所有内容。因此,您应该依赖现有机制,即browser.securityUI property(也可在tabbrowser上获得)。答案here解释了如何检查页面的SSL状态。

但是,您可能希望了解SSL状态何时更改。你会use a progress listener。将针对所有相关更改调用方法onSecurityChange(),您需要检查aState参数(仅当aState & Components.interfaces.nsIWebProgress.STATE_IS_SECURE为您提供非零值时才建立连接)。