При обработке предупреждений безопасности с помощью таких инструментов, как Fortify, важно понимать причину, стоящую за предупреждениями, чтобы правильно их смягчить.
Жестко закодированный домен в предупреждении HTML
В обосновании этого предупреждения «Жестко закодированный домен в HTML» компания Fortify ссылается на внешний домен, что ставит под угрозу безопасность вашего сайта, поскольку файл, на который вы ссылаетесь, может быть изменен.Следующее из "Укрепление таксономии: ошибки безопасности программного обеспечения":
Аннотация
Включение сценария из другого домена означает, что безопасность этой веб-страницызависит от безопасности другого домена.
Пояснение
Включение исполняемого контента с другого веб-сайта является рискованным предложением.Он связывает безопасность вашего сайта с безопасностью другого сайта.
Пример: рассмотрим следующий тег <script>
.
<script src="http://www.example.com/js/fancyWidget.js"/>
Если этот тег появляется на веб-сайте, отличном отwww.example.com
, тогда сайт зависит от www.example.com
для предоставления правильного и не злонамеренного кода.Если злоумышленники могут скомпрометировать www.example.com
, они могут изменить содержимое fancyWidget.js
, чтобы нарушить безопасность сайта.Они могут, например, добавить код к fancyWidget.js
для кражи конфиденциальных данных пользователя.
Снижение атаки
Существует два способа решения этой проблемы:
- Переместить все сценарии в свой собственный домен.Таким образом, вы контролируете содержание сценариев.Похоже, это рекомендация Fortify.
- Используйте свойство целостности субресурса для тегов
<script>
и <link>
, как описано в Mozilla Foundation (MDN) ниже.Это также не позволит браузерам выполнять удаленные сценарии, которые были изменены.
Субресурсная целостность (SRI) - это функция безопасности, позволяющая браузерам проверять, какие файлы они выбирают (например, изCDN) доставляются без неожиданных манипуляций.Он работает, позволяя вам предоставить криптографический хеш, которому должен соответствовать извлеченный файл.
Пример атрибута SRI integrity
показан ниже и используется многими CDN.
<script src="https://example.com/example-framework.js"
integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
crossorigin="anonymous"></script>
В идеале, Fortify должен поддерживать SRI в качестве допустимого метода смягчения, но если они этого не делают, они все равно будут отмечать эти ошибки, и вам придется вручную проверять и давать пропуска на любое такое предупреждение, которое было смягчено.
Лучший вариант
Выбор «Лучший» зависит от ваших требований.Вот некоторые соображения:
- Если вы используете коммерческий сервис и хотите, чтобы ваш сайт работал и находился под вашим контролем, то обслуживание файлов может быть лучшим вариантом, поскольку вы можете контролировать не только безопасностьно и доступность.Что касается доступности, если вы используете удаленный сайт и удаленный сайт становится недоступным, ваш сайт может перестать работать должным образом.Даже если вы сами размещаете файлы, вы все равно должны использовать SRI на тот случай, если ваши собственные файлы будут скомпрометированы.
- Если вы работаете с некоммерческим или небольшим коммерческим сайтом, то, возможно, можно использовать CDN сSRI, поскольку он позволит вам обеспечить безопасность, не требуя размещения файлов.