Може да не сте го забелязали, но посещаваните от вас уеб страници отправят чести заявки за зареждане на активи като изображения, шрифтове и други, от много различни места в Интернет. Ако тези заявки за активи останат непроверени, сигурността на вашия браузър може да бъде изложена на риск. Например, вашият браузър може да бъде обект на хакване или да изтегли зловреден код без да разберете. В резултат на това, много съвременни браузъри следват определени политики за сигурност, за да намалят подобни рискове.
КАКВО Е CORS??
Както е описано в Wikipedia: https://bg.wikipedia.org/wiki/Cross-origin_resource_sharing
Споделянето на ресурси с различен произход (CORS) е механизъм, който позволява ограничени ресурси на уеб страница да бъдат изискани от друг домейн извън домейна, от който е бил обслужен първият ресурс.
Уеб страницата може свободно да вгражда изображения, таблици със стилове, скриптове, рамки и видеоклипове с кръстосан произход. Някои заявки за „кръстосани домейни“, по-специално заявките на Ajax, са забранени по подразбиране от политиката за сигурност “same-origin”. CORS дефинира начин, по който браузърът и сървърът могат да си взаимодействат, за да определят дали е безопасно да се разреши искането за кръстосан произход. Той позволява по-голяма свобода и функционалност от заявките от заявките “same-origin”, но е по-сигурен от просто разрешаване на всички заявки за кръстосан произход.
“same-origin” (от същия произход) политиката в CORS е много ограничителна. Съгласно тази политика, документ (т.е. като уеб страница), хостван на сървър А, може да взаимодейства само с други документи, които също са на сървър А. Накратко, политиката “от същия произход” налага, че документите, които взаимодействат помежду си, имат еднакъв произход.
Използването на тези CORS заглавки, позволява на уеб разработчиците да ограничават какви външни източници могат да се показват, изтеглят или вграждат в техния уебсайт, като по този начин се разширява защитата срещу инжектиране на код и т.н. Има различни заглавки / политики, всяка от които е насочена към определен ресурс.
Понастоящем можете да използвате следните заглавки:
Content Security Policy (Политика за сигурност на съдържанието)
Заглавката CSP ви позволява да дефинирате бял списък с одобрени източници на съдържание за вашия сайт. Като ограничава активите, които браузърът може да зареди за вашия сайт, като js и CSS, CSP може да действа като ефективно противодействие на XSS атаки.
HTTP Strict Transport Security (HSTS, HTTP строга транспортна сигурност)
Сайтовете винаги са разчитали силно на пренасочване тип 301/302, за да пренасочат потребителите от сърфиране през HTTP към HTTPS. С браузърите, които по подразбиране са HTTP, когато въвеждате адрес, това преди беше единственият начин. HSTS ви позволява да кажете на браузъра, че винаги искате потребителят да се свързва с помощта на HTTPS вместо HTTP. Това означава, че всички отметки, връзки или адреси, които потребителите въведат, ще бъдат принудени да използват HTTPS, дори ако те ги въведат с HTTP. Тази политика ще приложи TLS на вашия сайт и всички поддомейни за една година.
HSTS позволява по-ефективно прилагане на TLS, като гарантира, че цялата комуникация се осъществява през защитен транспортен слой от страна на клиента. Най-забележителното е, че HSTS смекчава вариантите на атаки на “човек по средата” (man in the middle), при които TLS може да бъде отстранен от комуникацията със сървъра, оставяйки потребителя уязвим на допълнителен риск.
HTTP Public Key Pinning (HPKP, закрепване с публичен ключ)
Най-страхотното при SSL / TLS сертификатите е, че можете да си купите сертификат от всеки доверен сертифициращ орган и браузърът с радост ще го приеме. Проблемът с това е, че когато даден сертифициращ орган е компрометиран, нападателят може да си издаде SSL / TLS сертификат за вашия сайт и браузърът ще приеме този измамен сертификат, като получен от доверен сертифициращ орган. HPKP ви позволява да се защитите, като предоставите бял списък с криптографски идентичности, на които браузърът трябва да вярва. Докато HSTS казва, че браузърът винаги трябва да използва HTTPS, HPKP казва, че браузърът трябва да приема само определен набор от сертификати.
X-Frame-Options
Заглавката X-Frame-Options (RFC) или XFO, предпазва посетителите ви от атаки с clickjacking.
Clickjacking е злонамерена техника за измама на потребителя да кликне върху нещо различно от това, което възприема, като по този начин потенциално разкрива поверителна информация или позволява на другите да поемат контрола над компютъра му, кликвайки върху привидно безобидни обекти.
Атакуващият може да зареди iframe на техния сайт и да зададе вашият сайт като източник, което е доста лесно: Използвайки някои хитри CSS, те могат да скрият вашия сайт във фонов режим и да създадат истински изглеждащи наслагвания. Когато посетителите ви щракнат върху нещо, което според тях е безвредно, те всъщност кликват върху връзки на вашия уебсайт във фонов режим. Това може да не изглежда толкова лошо, докато не осъзнаете, че браузърът ще изпълни тези заявки в контекста на потребителя, което може да включва влизане и удостоверяване на вашия сайт, при което техните данни ще бъдат откраднати.
X-Xss-Protection (XSS защита)
Тази заглавка се използва за конфигуриране на вградената XSS защита, включена в Internet Explorer, Chrome и Safari (Webkit). Валидни настройки за заглавката са 0, което деактивира защитата, 1, което позволява защитата и “1; mode = block”, което казва на браузъра да блокира отговора, ако открие атака, вместо да “дезинфекцира” скрипта.
X-Content-Type-Options (Опции за типа за съдържанието)
Хубава и лесна за конфигуриране, тази заглавка има само една валидна стойност – “nosniff”. Това пречи на Google Chrome и Internet Explorer да зададат mime типа на съдържанието да е различен от този, деклариран от сървъра. Намалява излагането на drive-by изтегляния и рисковете от качено от потребителите съдържание, което с интелигентно именуване може да се третира като различен тип съдържание, например изпълним файл.
Permissions Policy (ex. Feature-Policy) (Политика за разрешения)
Правилата за разрешения е създадена, за да позволи на собствениците на сайтове да активират и деактивират определени функции на уеб платформата на собствените си страници и тези, които вграждат. Възможността да ограничавате функциите, които вашият сайт може да използва, е наистина приятна, но възможността да ограничавате функции, които сайтовете, които вграждате, могат да използват, е още по-добра защита.
Referrer-Policy (Политика за препращане)
Политиката за препращане е нова заглавка, която позволява на сайта да контролира колко информация браузърът включва/запазва при навигация далеч от текущия документ и трябва да бъде зададена от всички сайтове.
Политиката за препращане ще позволи на даден сайт да контролира стойността на заглавката на референта във връзки водещи далеч от техните страници. Когато потребителят щракне върху връзка към даден сайт (произходът), който ги отвежда до друг сайт (местоназначението), вторият сайт получава информация за произхода, от който идва потребителят. По този начин получаваме показатели като тези, предоставени от Google Analytics, откъде идва нашият трафик. Можете да знаете например колко потребители са дошли от Twitter тази седмица, защото когато посещават вашия сайт, те задават заглавката на референта в тяхната заявка.
Тази заглавка ви позволява да знаете откъде е дошъл входящият посетител и е наистина удобена, но има случаи, в които може да искате да контролирате или ограничите количеството информация, присъстващо в тази заглавка, като пътя или дори дали заглавката изобщо да бъде изпратена.