На момент написания книги Feature-Policy
является самым новым заголовком безопасности, поддерживаемым современными браузерами. Он разрешает или запрещает веб-приложению использовать HTML 5 и многие другие новые возможности в более современных браузерах.
Настроить данный заголовок можно с помощью следующих атрибутов:
• none: ничего не разрешать;
• self: разрешить функцию, но пользоваться ею может только собственный домен;
• src (только iframes): документ, загружаемый в iframe, должен иметь тот же источник, что и URL-адрес в атрибуте src
для iframe;
• *: любой домен может пользоваться функцией;
• <origin(s)>: функция разрешена для определенных URL.
Вот пример, позволяющий запускать на сайте только свой динамик и полный экран:
Feature-Policy: camera 'none'; microphone 'none'; speaker 'self';
vibrate 'none'; geolocation 'none'; accelerometer 'none';
ambient-light-sensor 'none'; autoplay 'none'; encrypted-media 'none';
gyroscope 'none'; magnetometer 'none'; midi 'none'; payment 'none';
picture-in-picture 'none'; usb 'none'; vr 'none'; fullscreen *
Эти настройки использовались для сайта проекта OWASP DevSlop. Мы запретили почти все функции. Разрешили использовать динамик только при вызове с нашего сайта. Мы также разрешили любому домену переключать браузер в полноэкранный режим. В сомнительных моментах лучше быть более строгим. Пользователи отблагодарят за это.
Заголовок безопасности X-Permitted-Cross-Domain-Policies
относится только к продуктам Adobe (Reader и Flash), являющимся частью приложения. Adobe Flash ужасно небезопасен и больше не поддерживается компанией Adobe, поэтому его не следует использовать в современных веб-сайтах или приложениях.
Цель данного заголовка – разрешить или запретить доступ файлам домена к продуктам Adobe с других сайтов. Если вы намерены разрешить Adobe Reader, размещенному вне вашего домена, доступ к документам на вашем сайте, нужно указать сторонние домены в данном заголовке. В противном случае, установив значение none, вы запретите любым сторонним доменам использовать продукты Adobe для доступа к вашим документам либо ресурсам:
X-Permitted-Cross-Domain-Policies: none
CT (от англ. Certification Transparency) обозначает прозрачность сертификатов, то есть это фреймворк с открытым исходным кодом, который обеспечивает надзор за центрами сертификации (ЦС). Время от времени центры сертификации случайно выдают сертификаты далеко не идеальным, а иногда даже откровенно вредоносным сайтам. Вся система центров сертификации была разработана для того, чтобы обеспечить доверие и убедиться в том, что имеющий сертификат сайт безопасен для браузеров и пользователей. Недопустимо, чтобы ЦС предоставлял сертификаты вредоносным сайтам, будь то по ошибке, небрежности или специально. Система Certificate Transparency Framework регистрирует данные о различных операциях, отслеживая случаи некорректной выдачи сертификатов центром сертификации.
Если при выдаче сертификатов ЦС допустил несколько «ошибок», браузер или организация могут перестать «доверять» выданным им сертификатам.
Вы можете задаться вопросом, какое отношение это имеет к вам как разработчику программного обеспечения, специалисту по поддержке приложений или обеспечению безопасности. Для того чтобы помочь сохранить целостность всей системы центров сертификации, мы должны регистрировать наши сертификаты в онлайн-реестре CT. Если сертификат сайта отсутствует в реестре, современные веб-браузеры будут выдавать пользователям предупреждения о том, что ваш сайт не заслуживает доверия. Компаниям совершенно не нужно, чтобы браузеры сообщали пользователям, что их сайт небезопасен.
При включенном заголовке безопасности Expect-CT
:
1) так или иначе браузер пользователя будет проверять журналы CT на предмет наличия в нем вашего сертификата;
2) при установленном значении enforce
браузер пользователя будет обеспечивать прозрачность сертификата: если сертификат отсутствует в реестре или «не одобрен CT», соединение между сайтом и пользователем будет прервано. Если режим enforce
не установлен, отчет отправляется на соответствующий URL-адрес.
Рекомендуется сначала установить режим only reporting
(«только отчетность»), а после подтверждения того, что сертификаты соответствуют требованиям и были правильно зарегистрированы, перейти в режим enforce
.
Поле max-age
(измеряется в секундах) – это время применения настройки (то есть она будет кэшироваться в браузере в течение определенного времени).
ВНИМАНИЕ. Как и в случае с отчетами CSP, URL-адреса отчетов Expect-CT носят открытый характер. Информация из них может быть доступна любому человеку, в том числе тем, у кого не самые честные намерения.
Ниже приведены два примера реализации заголовка Expect-CT
:
Только отчетность
Expect-CT: max-age=86400, report-uri="https://wehackpurple.com/report"
Отчетность и блокировка
Expect-CT: max-age=86400, enforce, report-uri="https://wehackpurple.com/report"
Ниже приведен еще один пример из проекта OWASP DevSlop, на этот раз для приложений. Net CORE. Как указано в первой строке, в нем требуется добавление дополнительного пакета Nuget («Nwebsec.AspNetCore.Middleware»):
<PackageReference Include="Nwebsec.AspNetCore.Middleware"
Version="2.0.0"/>
//Security headers.Net CORE, not the same as ASP.net
app.UseHsts(hsts => hsts.MaxAge(365).IncludeSubdomains());
app.UseXContentTypeOptions();
app.UseReferrerPolicy(opts => opts.NoReferrer());
app.UseXXssProtection(options => options.EnabledWithBlockMode());
app.UseXfo(options => options.Deny());
app.UseCsp(opts => opts
BlockAllMixedContent()
StyleSources(s => s.Self())
StyleSources(s => s.UnsafeInline())
FontSources(s => s.Self())
FormActions(s => s.Self())
FrameAncestors(s => s.Self())
ImageSources(s => s.Self())
ScriptSources(s => s.Self())
);
//End Security Headers