XSS. Не эскейпнутые данные у Яндекс


04.01.2020 — Познавательно


Я хотел начать орать, но рано. Тип яндух сохраняет и отдает не экранированные данные, а потом вспомнил, ШО ТАК И НАДО!

Знаете же какая лучшая практика против XSS всяких? Экранировать при ВЫВОДЕ, а не ВВОДЕ!

Почему? Да потому что если выйдет найти место без фильтра на ввод (ну или тупо в базу запись вставить), то пассивная XSS начнёт работать везде, где есть вывод этих данных.

С другой стороны, такой подход обязывает всех использующих API экранировать у себя локально и вероятность того, что где-нить прогер забудет это сделать высока.

Короче я бы зарофлил и пошёл фигачить ХСС в приложухи яндуха)0))

UPD. Они в своих прилах вообще юзают HTML вставки для банеров там всяких и прочей лабуды)))

UPD2. Норм люди обёртку над выводом пилят, я тоже адекватным стараюсь быть

Держите еще ссылку на вики шо это, некоторым полезно Межсайтовый скриптинг

text = TextBuilder()
text.add(f'Моя музыка')
text.add('<b>{display_name}</b>', display_name=context.client.account.display_name)

def add(self, line='', **values):
        escaped_values = {key: escape(value) for key, value in values.items()}

Сойдёёёёт, так давно с .format не работал, ужас.

escape из пакета html

Недавние посты


© marshal.by 2020

Исходный код

Сайт работает на Gatsby + prismic и опубликован на GitHub.