Применение разных политик безопасности контента к разным каталогам с NWebSec - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть веб-сайт ASP.NET MVC с сильно настроенным бэкэндом Umbraco 6 в качестве CMS сайта.

Я обновлял заголовки политики безопасности контента (CSP) по всему сайту, что я и делаю с помощью NWebsec, и теперь веб-сайт с радостью использует строгую динамику CSP 3, и на каждомтег сценария, и все работает отлично.

К сожалению, я не смог применить те же изменения в административной области Umbraco, поэтому большинство из них не работает вообще.

Итак, я хочу применить строгую политику CSP 3 к общедоступным частям веб-сайта и применить смягченную политику CSP к закрытой административной области.

Область администратора Umbraco находится в подкаталоге / umbraco /, поэтому я подумал, что лучший способ реализовать это - использовать два разных элемента местоположения в файле Web.config сайта.

Так что мой Web.config теперь выглядит примерно так::

<!-- Specific CSP for Umbraco -->
<location path="~/umbraco">
  <nwebsec>
  ...
  <content-Security-Policy enabled="true">
    ...
    <script-src self="true" unsafeInline="true" unsafeEval="true">
      <add source="data:" />
    </script-src>
    ...
  </content-Security-Policy>
  </nwebsec>
</location>

<!-- default CSP for everything else -->
<location path=".">
  <nwebsec>
  ...
  <content-Security-Policy enabled="true">
    ...
    <script-src self="true" unsafeInline="true" unsafeEval="false" strictDynamic="true">
    </script-src>
    ...
  </content-Security-Policy>
  </nwebsec>
</location>

Но это относится к конфигурации по умолчанию ко всему сайту.

Я не уверен, что у меня неправильная конфигурация, или, может быть, NWebSec не поддерживает то, что япытаюсь сделать, или есть какая-то конкретная проблема с перенаправлениями или что-то еще.

1 Ответ

0 голосов
/ 31 октября 2018

Исправлено путем создания отдельного Web.config в подкаталоге / umbraco.

Main Web.config:

<location path="." allowOverride="true"> <nwebsec> ... <content-Security-Policy enabled="true"> ... <script-src self="false" unsafeInline="true" unsafeEval="false" strictDynamic="true"> <add source="www.example.com" /> </script-src> ... </content-Security-Policy> </nwebsec> </location>

Web.config в / umbracoподкаталог:

<location path="." allowOverride="true"> <nwebsec> ... <content-Security-Policy enabled="true"> ... <script-src self="true" unsafeInline="true" unsafeEval="true" strictDynamic="false"> <clear/> <add source="www.other-example.com" /> </script-src> ... </content-Security-Policy> </nwebsec> </location>

Конфигурация в подкаталоге переопределяет основной файл Web.config, так что strictDynamic = "false" отключает использование этих одноразовых номеров CSP3, а элемент clear удаляет все предустановленные-существующие элементы в коллекции, поэтому можно использовать новый набор доменов.

...