Заголовок відповіді HTTP Content-Security-Policy дозволяє сайту контролювати, які ресурси користувацький агент завантажує для певної сторінки. За винятком особливих випадків, набір політик переважно включає вказівку вихідного та скриптового кінцевих точок сервера. Це допоможе запобігти атакам на крос-сайті скриптування
Документації:Вхід за гіперпосиланням видно.
Ця стаття описує Політику безпеки контенту W3C, або скорочено CSP. Як випливає з назви, ця специфікація пов'язана з безпекою контенту і головним чином використовується для визначення, які ресурси сторінка може завантажувати, а також для зменшення появи XSS.
Ранній Chrome підтримував CSP через відповідь X-WebKit-CSP, Firefox і IE підтримували X-Content-Security-Policy, а Chrome25 і Firefox23 почали підтримувати стандартну політику безпеки контенту.
Може збиратися конфіденційна інформація про веб-додатки, така як імена користувачів, паролі, імена машин та/або конфіденційні місця розташування файлів Початківців можна переконати надати конфіденційну інформацію, таку як імена користувачів, паролі, номери кредитних карток, номери соціального страхування тощо
Спочатку створимо новий проєкт ASP.NET MVC, створимо новий js-скрипт і динамічно завантажимо js-код статистики Baidu, наступним чином:
Як показано на рисунку вище, ми можемо побачити JS-скрипт-код, який успішно впроваджений у третю сторону (Baidu), якщо в сторонньому JS є шкідливий код, наприклад, крадіжка cookie, зміна контенту, стрибок посилань тощо.
Як я можу зупинити появу незахищених сторонніх JS-скриптів?
Обхідний шлях
Головка реакціїДодати «Політику безпеки контенту»наприклад:
Директива | Приклад значення інструкції | Ілюстрації | default-src | 'self' cnd.a.com | Визначте стандартну політику завантаження для всіх типів ресурсів (JS, IMAGE, CSS, WEB FONT, AJAX-запити, iframes, мультимедіа тощо) і використовуйте її за замовчуванням для певних типів ресурсів, якщо окремої політики немає. | script-src | 'self' js.a.com | Визначте політику завантаження для JavaScript. | Стиль-SRC | 'self' css.a.com | Визначте політику завантаження для стилю. | IMG-SRC | «я» img.a.com | Визначте політику завантаження для зображень. | connect-src | 'self' | Політики завантаження запитів від Ajax, WebSockets тощо. Якщо це не дозволено, браузер імітує відповідь зі статусом 400. | font-src | font.a.com | Політика завантаження для WebFont. | Object-src | 'self' | <object><embed> <applet> Політики завантаження плагінів, таких як Flash, введені для тегів, таких як , або . | Media-SRC | media.a.com | <audio> <video> Стратегії завантаження HTML-мультимедіа введені для тегів, таких як або . | frame-src | 'self' | Політика завантаження кадрів. | пісочниця | Допустимі форми | Увімкніть пісочницю (подібно до властивості пісочниці iframe) для запитуваного ресурсу. | Звіт-URI | /report-uri | Повідомте браузеру, на яку адресу надсилати дані журналу, якщо запитуваний ресурс не дозволений політикою. Спеціально: якщо ви хочете, щоб браузер повідомляв лише про журнали і нічого не блокував, можна скористатися заголовком Content-Security-Policy-Report-Only. |
Давайте змінимо файл web.config проєкту, щоб додати власний заголовок відповіді наступним чином:
Повторіть проєкт, як показано нижче:
Браузер успішно заблокував завантаження сторонніх js-скриптів:
Відмовився завантажувати скрипт 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319', оскільки він порушує наступну директиву Політики безпеки контенту: "script-src 'self' http://localhost:56888/ ". Зверніть увагу, що 'script-src-elem' не був явно встановлений, тому 'script-src' використовується як запасний варіант. (Кінець)
|