Что мешает мне обойти одноразовый номер CSP проверкой заголовка ответа? - PullRequest
0 голосов
/ 25 сентября 2019

Я немного запутался в том, как одноразовые ссылки работают с CSP.

Для любого веб-сайта я могу легко проверить заголовок ответа, чтобы найти заголовок Content-Security-Policy, и оттуда я мог видетьодноразовый номер, который разрешен.

Если я могу найти одноразовый номер и могу ли я вставить встроенный скрипт.Я мог бы просто добавить одноразовый номер в мой встроенный скрипт и внедрить вредоносный код.Как безопасен одноразовый номер?

Кроме того, можете ли вы использовать метатег для доставки CSP с одноразовым номером?

1 Ответ

0 голосов
/ 25 сентября 2019

Веб-сервер должен каждый раз предоставлять уникальный и неузнаваемый одноразовый номер.Таким образом, каждый раз, когда сервер отправляет ответ, он устанавливает значение «полдень» в двух местах

  1. для тега сценария (как часть встроенного сценария) например

      <script nonce="2726c7f26c">
          var inline = 1;
      </script>
    
  2. в заголовке ответа csp, как показано ниже:

       Content-Security-Policy: script-src 'nonce-2726c7f26c'
    

Это обязанность клиента http, в данном случае браузера, обеспечить этизначения совпадают, прежде чем он анализирует и оценивает этот встроенный скрипт.

Прямая выдержка из MDN:

Белый список для определенных встроенных сценариев, использующих одноразовый криптографический номер (число используется один раз).Сервер должен генерировать уникальное значение nonce каждый раз, когда он передает политику.Очень важно предоставить неосуществимый одноразовый номер, так как обход политики ресурса является тривиальным.

refs:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...