0
.

. Я пытаюсь внедрить «Аутентификацию через Google» в простое веб-приложение, над которым я работаю. Для этого я использовал следующий код.Ошибка безопасности. Страница содержит один или несколько файлов сценариев из стороннего домена.

<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. Разглашение или утечка конфиденциальной информации третьим сторонам.

Однако я также понимаю, что если я собираюсь использовать аутентификацию Google, я должен буду доверять Google и предположить, что они не будут делать ничего плохого здесь.

Есть ли лучший способ сделать это в моем коде, чтобы ZAP не предупредил меня?

Можно ли игнорировать это предупреждение?

ответ

1

Что ZAP смотрит на имя хоста вашей веб-страницы и имя хоста встроенных javascripts. Поскольку ваше имя хоста сайта не будет google.com, ZAP всегда будет жаловаться. Единственное, что мы доверяем внешнему JS. Но вы можете загрузить внешний JS-файл и разместить его в своем веб-приложении. Таким образом вы вызываете свой собственный JS-файл, а затем ZAP игнорирует его. Однако, если google изменяет 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: Включение

Междоменное Script

Подтверждает независимо от того, включены ли сценарии из доменов, отличных от домена, на котором размещен контент. Посмотрев атрибуты «src» тегов «script» в ответе.Разрешенные скрипты Междоменные:

  • Любой сценарий с непустым атрибутом «целостности» игнорируются - значение по целостности не проверяются, как это будет проверено браузером
  • при среднем и высоких порогах, если это URL-адрес сценария попадает в контекст, который также включает URL-адрес базового сообщения, никаких предупреждений не будет поднято .

Таким образом, вы можете указать атрибут «целостность» или создать контекст и включить в него все домены, которым вы доверяете.

+0

Есть ли проблемы с безопасностью, вызванные наличием внешнего javascript, который будет предотвращен с использованием вышеупомянутого? Или они просто избегают предупреждения ZAP? –

+0

Атрибут «целостность» гарантирует, что сценарий не был изменен - ​​если это тогда, значение целостности будет неправильным, и ваш браузер не должен загружать скрипт. –

 Смежные вопросы

  • Нет связанных вопросов^_^