CheatSheetSeries в master · OWASPCheatSheetSeries · GitHub

Шпаргалка для запобігання сценаріям між сайтами

owaspcheatsheetseries

У цій статті подано просту позитивну модель для запобігання XSS за допомогою правильного кодування вихідних даних. Хоча існує величезна кількість векторів атак XSS, дотримання декількох простих правил може повністю захистити від цієї серйозної атаки.

У цій статті не розглядається технічний чи діловий вплив XSS. Досить сказати, що це може призвести до того, що зловмисник отримає можливість робити все, що може зробити жертва через свій браузер.

Як до відображеного, так і до збереженого XSS можна звернутися, виконавши відповідну перевірку та кодування на стороні сервера. До XSS, що базується на DOM, можна звертатися за допомогою спеціального підмножини правил, описаних у шпаргалці щодо запобігання XSS на основі DOM.

Щоб отримати шпаргалку щодо векторів атак, пов’язаних із XSS, зверніться до шпаргалки для ухилення від фільтру XSS. Більше інформації про безпеку браузера та різні браузери можна знайти в Довіднику з безпеки браузера.

Перш ніж читати цю шпаргалку, важливо глибоко зрозуміти теорію ін'єкцій.

Позитивна модель запобігання XSS

Ця стаття розглядає HTML-сторінку як шаблон, із слотами, куди розробнику дозволяється розміщувати ненадійні дані. Ці слоти охоплюють переважну більшість загальних місць, де розробник може захотіти розмістити ненадійні дані. Не дозволяється розміщувати ненадійні дані в інших місцях HTML. Це модель "білого списку", яка заперечує все, що спеціально не дозволено.

З огляду на те, як браузери аналізують HTML, кожен з різних типів слотів має дещо різні правила безпеки. Коли ви розміщуєте ненадійні дані в ці слоти, вам потрібно вжити певних кроків, щоб переконатися, що дані не пробиваються з цього слоту в контекст, що дозволяє виконувати код. Певним чином, цей підхід розглядає документ HTML як параметризований запит до бази даних - дані зберігаються в певних місцях і ізольовані від контекстів коду за допомогою кодування.

У цьому документі викладено найпоширеніші типи слотів та правила безпечного зберігання в них ненадійних даних. На основі різних специфікацій, відомих векторів XSS та великої кількості ручного тестування з усіма популярними браузерами ми визначили, що запропоновані тут правила безпечні.

Слоти визначені та надано кілька прикладів кожного з них. Розробники НЕ СЛІД розміщувати дані в будь-яких інших слотах без дуже ретельного аналізу, щоб переконатися, що те, що вони роблять, безпечно. Розбір браузера надзвичайно складний, і багато нешкідливих персонажів можуть бути важливими у правильному контексті.

Чому я не можу просто кодувати сутність HTML ненадійними даними