Subresource Integrity

Изображение поста

Изначально этот пост строился вокруг dnschef и ssltrip, с помощью которых я хотел показать наглядно как работает dns spoofing и как помогает в этом SRI, но статья получилась очень уж громоздкой, со множеством нюансов и пояснений, поэтому ее пришлось убрать в архив. Однако, если будет спрос, то будет и предложение.

SRI (Subresource Integrity) - это функция безопасности используемая браузером, которая позволяет определить, были ли изменены скачиваемые скрипты. Идея состоит в подсчете хэша исходного кода скрипта с использованием алгоритмов sha256, sha384 и sha512 и записи результата хеширования в аттрибут integrity.

Пример подключаемого с cdn bootstrap:

Получается, что SRI защищает от подмены исходного кода условного bootstrap, но кто может это сделать? Я вижу здесь два вектора:

  1. Код может быть изменен владельцем узла cdn или тем лицом, которое получило доступ к узлу.
  2. Код может быть изменен третьей стороной, на пути к клиенту, к примеру, подмена dns.

И если в первом случае наврятли что-то поможет, то во втором SRI может спасти пользователя. Когда браузер обнаруживает ресурс, использующий SRI, он считает хеш-сумму файла и сравнивает ее со значением, указанным в integrity. Если хэши не совпадают, браузер начинает грязно ругаться и скрипт не будет выполнен.

Alt

Разумеется, это применимо не только к cdn, на своих серверах так же можно и нужно использовать данный механизм. Поддержка браузерами на данный момент следующая:

Alt

Блок комментариев