HTTP отговорният заглавие Content-Security-Policy позволява на сайта да контролира кои ресурси потребителският агент зарежда за дадена страница. С изключение на специални случаи, наборът от политики основно включва уточняване на изходния и скриптния край на сървъра. Това ще помогне да се предотвратят атаки с крос-сайт скриптове
Документация:Входът към хиперлинк е видим.
Тази статия описва Политиката за сигурност на съдържанието на W3C, или накратко CSP. Както подсказва името, тази спецификация е свързана със сигурността на съдържанието и се използва основно за определяне кои ресурси може да зарежда една страница и за намаляване на появата на XSS.
Ранният Chrome поддържаше CSP чрез отговорния хедър X-WebKit-CSP, докато Firefox и IE поддържаха X-Content-Security-Policy, а Chrome25 и Firefox23 започнаха да поддържат стандартната Content-Security-Policy.
Може да се събира чувствителна информация за уеб приложения, като потребителски имена, пароли, имена на машини и/или чувствителни места на файлове Начинаещи потребители могат да бъдат убедени да предоставят чувствителна информация като потребителски имена, пароли, номера на кредитни карти, социални осигурителни номера и др
Първо, нека създадем нов проект ASP.NET MVC, създадем нов js скрипт и динамично заредим js кода на Baidu статистиката, както следва:
Както е показано на горната фигура, можем да видим JS скриптовия код, който е успешно въведен в трета страна (Baidu), ако има някакъв злонамерен код в JS на трета страна, като кражба на бисквитки, модифициране на съдържание, прескачане на връзки и др.
Как мога да спра въвеждането на несигурни JS скриптове на трети страни?
Заобиколно решение
Отговорна главаДобавете "Политика-Сигурност-Съдържание"Например:
Директива | Пример за стойност на инструкциите | илюстрирам | default-src | "Себе си" cnd.a.com | Дефинирайте стандартната политика за зареждане за всички видове ресурси (JS, IMAGE, CSS, WEB FONT, AJAX заявки, iframes, мултимедия и др.) и използвайте по подразбиране за определени типове ресурси, ако няма отделна дефинирана политика. | script-src | "себе си" js.a.com | Дефинирайте политика за зареждане на JavaScript. | Style-SRC | "Себе си" css.a.com | Дефинирайте политика за зареждане за стил. | IMG-SRC | "себе си" img.a.com | Дефинирайте политика за зареждане на изображения. | connect-src | "аз" | Политики за зареждане на заявки от Ajax, WebSockets и др. Ако не е разрешено, браузърът симулира отговор със статус 400. | font-src | font.a.com | Политика за зареждане на WebFont. | Object-src | "аз" | <object><embed> <applet> Политики за зареждане на плъгини като flash въведени за тагове като , или . | Media-src | media.a.com | <audio> <video> Въведени стратегии за зареждане на HTML мултимедия за тагове като или . | frame-src | "аз" | Политика за зареждане на рамки. | Пясъчник | Допустими форми | Активирайте пясъчника (подобно на пясъчника в iframe) за поискания ресурс. | доклад-ури | /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' се използва като резервен вариант. (Край)
|