0

我試圖將「通過Google進行身份驗證」嵌入到我正在處理的簡單Web應用程序中。我用下面的代碼來做到這一點。安全錯誤 - 該頁面包含來自第三方域的一個或多個腳本文件

<html> 
<head> 
    <title> Home </title> 
    <script src = "https://apis.google.com/js/platform.js?onload=onLoadCallback" ></script> 
    <script> 
     function changePage() { 
      if (!gapi.auth2.getAuthInstance().isSignedIn.get()) { 
       window.location.href = "login.jsp"; 
      } 
     } 
    </script> 
    <script> 
     gapi.load('auth2', function() { 
      gapi.auth2.init().then(changePage); 
     }); 

    </script> 
    <script> 

    </script> 
    <script> 
     var user; 
     function signOut() { 
      var auth2 = gapi.auth2.getAuthInstance(); 
      user = auth2.signOut().then(changePage); 
     } 
     ; 
    </script> 
    <meta name="google-signin-client_id" content="xxxxxxxxxxxx"> 

</head> 
<body style="background-color:azure;"> 
<div class="vertcal-center"> 
    <div class="myclass"> 

     <h1>Welcome to home page 
      </h1> 
       <button type="button" class="button" onclick="signOut()">Log Out</button> 
    </div> 
</div> 
</body> 
</html> 

然而,當我在我的代碼跑ZAP分析,它給了我一個低風險警告,指出"The page includes one or more script files from a third-party domain"。它指出跟隨線作爲問題的線。

<script src = "https://apis.google.com/js/platform.js?onload=onLoadCallback" ></script> 

我指OWASP tutorial它描述了這個問題,據我所知,這會帶來他們所提到的3個險這些

  1. 控制權變更的客戶端應用程序的損失。

  2. 在客戶端系統上執行任意代碼。

  3. 將敏感信息泄露或泄露給第三方。

不過,我也明白,如果我要使用谷歌認證,我必須相信谷歌並假定他們不會做什麼壞事這裏。

有沒有更好的方法在我的代碼中做到這一點,以便ZAP不會警告我?

可以忽略此警報嗎?

回答

1

ZAP看到的是您的網頁的主機名和嵌入式JavaScript的主機名。 由於您的網站主機名不會是google.com,ZAP將始終抱怨。 唯一的是我們正在信任外部的JS。 但是,您可以下載外部JS文件並將其託管在您的Web應用程序中。 這樣你就可以調用你自己的JS文件,然後ZAP會忽略它。 但是,如果谷歌之後修改JS文件,你的本地JS文件將不會得到新的修改。所以我的意見是你可以證明這一點,並忽略ZAP報告中的問題。

當您使用外部javascripts時,請務必檢查他們是否有任何已知的漏洞報告。你可以參考[1]瞭解更多相關信息。

[1] https://medium.com/@PrakhashS/using-retire-js-with-zap-to-identify-vulnerabilities-in-javascript-libraries-7baad56690aa#.cotei58mk

0

此規則適用於附帶ZAP,這也是網上提供的幫助是描述方式:https://github.com/zaproxy/zap-core-help/wiki/HelpAddonsPscanrulesPscanrules#cross-domain-script-inclusion

跨域腳本納入

void驗證無論腳本是否包含在託管內容的域以外的域中。通過查看響應中「腳本」標籤的「src」屬性。允許跨域腳本:

  • 與非空「誠信」屬性的腳本將被忽略 - 不檢查 完整性值,因爲這會被瀏覽器
  • 在中,如果門檻過高檢查一個腳本URL位於一個上下文中,該上下文還包含基本消息的URL,不會引發警報 。

因此,您可以指定'完整性'屬性或創建上下文並在其中包含您信任的所有域。

+0

是否有任何安全問題引起的外部JavaScript將通過使用上述提到的防止?或者他們只是避免ZAP警告? –

+0

「完整性」屬性確保腳本未被篡改 - 如果是,則完整性值將錯誤,並且瀏覽器不應加載腳本。 –

相關問題