簡體   English   中英

捕獲內容安全策略(CSP)錯誤

[英]Catching Content Security Policy (CSP) errors

我正在使用此方法來檢測帶有eval CSP(也用於AngularJS):

  function noUnsafeEval() {
    try {
      new Function('');
      return false;
    } catch (err) {
      return true;
    }
  }

但是我沒有配備CSP的服務器來徹底測試它。

它可靠嗎? 代碼中是否存在new Function('')行會導致無法捕獲的錯誤?

什么是err 在那里捕獲了哪種錯誤( ErrorTypeError等)? CSP錯誤的消息是什么意思?

我在CSP中找不到有關運行時錯誤的文檔。

關於如何檢測CSP,還有另一個stackoverflow問題: 如何檢測內容安全策略(CSP) ,它還顯示了您的功能。

使用它應該是安全的,因為只要代碼到達函數構造函數(即它之前沒有被其他限制阻塞),您將總是從noUnsafeEval獲取返回值。

據我所知,如果CSP不允許不安全的eval,它將拋出一個EvalError( mozilla )。 但這可能因瀏覽器而異。

最好的方法是測試這個。 您可以使用http://mockbin.org創建一個HTTP端點,該端點返回具有正確CSP標頭和您的功能的頁面。 我在這里制作了這樣一個箱子: http//mockbin.org/bin/cc6029e5-8aac-4a54-8fd1-abf41e17042a 如果你打開它,打開開發控制台並調試代碼,你會看到異常:

CSP測試


稍后編輯

您還可以在W3C建議/草案中找到此信息: CSP 1.1CSP 2CSP 3 在1.1中,您將獲得SecurityError而不是EvalError。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM