从网页中检测Chrome开关允许运行不安全的内容

时间:2015-09-06 17:37:59

标签: asp.net google-chrome security

我在ASP.NET中构建了一个SSO登录页面,我在其中对用户进行身份验证,然后将其传递到另一个系统。由于未知原因,此其他系统要求Chrome使用交换机运行--allow-running-insecure-content,以便某些外部设备可以与其网站一起运行。

我的客户希望确保当前的Chrome浏览器实例正在使用此标记/开关集运行,如果没有显示错误/警告消息。

有没有办法从ASP.NET中检测Chrome本身?或者,也许是一种模拟加载需要设置开关的资源的方法,然后检测是否加载了该资源?

2 个答案:

答案 0 :(得分:1)

是的,客户端有一种方法可以检测Chrome是否与--allow-running-insecure-content一起运行。

诀窍是向网页添加不安全的资源,然后检查是否使用JavaScript加载了该资源。使用其常规安全参数,Chrome不会从安全上下文中加载不安全的资源。

以下是一些示例代码:

<强> HTML:

<!-- When Chrome is run in insecure mode, as desired, this message will be removed -->
<div class="not-insecure-warning">
  Your browser is not configured properly. You must access this page with Chrome using <code>--allow-running-insecure-content</code>. <a href="#">Learn more.</a>
</div>

<强> JavaScript的:

// Remove `.not-insecure-warning` elements
function removeNotInsecureWarning(){
  var warnings = document.getElementsByClassName('not-insecure-warning');
  for(var i = 0; i < warnings.length; i++){
    var warning = warnings[i];
    warning.parentNode.removeChild(warning);
  }
}

var insecureScript = document.createElement('script');
// TODO: Replace URL to an empty `.js` file served over HTTP
insecureScript.src = 'http://code.jquery.com/jquery-3.2.1.js';
// If this insecure script loads, then the browser is running in insecure mode, remove the warning
insecureScript.addEventListener('load', removeNotInsecureWarning);
document.body.append(insecureScript);

See this example on JSFiddle.如果您正常运行Chrome,则会看到警告,但如果您打开一个允许不安全内容的新窗口,此页面上的警告将会消失。

如果您需要将此信息传递给服务器端逻辑,您可以:

  1. 使用AJAX。如果使用insecureScript.addEventListener('error', isSecureSendPOSTRequest);
  2. 等事件监听器无法加载不安全脚本,请发送XMLHttpRequest
  3. 使用您可以在用户登录后立即处理的隐藏表单输入<input name="is_insecure" type="hidden" value="0">。您可以使用上面显示的相同类型的客户端逻辑切换此输入的value

答案 1 :(得分:-1)

我不知道直接解决方案,但可能的解决方案是您可以使用c#中的shell脚本打开chrome,如下所示。

class Module1 {

    static void Main() {
        System.Diagnostics.Process.Start("chrome.exe", "--allow-running-insecure-content");
         }
      }

如果您想添加--allow-running-insecure-content以使用该标志加载浏览器