Вот никак не пойму наших «девелоперов».
Разве сложно сделать универсальный инструмент для защиты от XSS в полях ввода? Мне кажется, это сущие пустяки, однако, со времен dial-up постоянно натыкаюсь на новые посты типа «XSS в %projectname% решето».
Видимо, нравится им набирать в разработчики школоту и делать абсолютно все руками.
Может быть, на эту тему их никто не пинает и не лишает премий?.. Мало ли, что неудобно, если без этого решето. Я вот тоже до недавнего времени не задумывался о SQL-инъекциях, а когда прокачал свой моск — не могу без ужаса смотреть на сопровождаемый ныне код. Некоторые знания лишают сна, и заслуженно.
Скорее всего, да. Всё зависит от того, в какой степени Вы пользуетесь ЯП.
У меня (C++) используется класс SecureString, который шаблонно наследуется от ряда стратегий, например, QuotesStrategy и HtmlStrategy. Каждая стратегия может быть Throw, Skip, Escape, Ignore. В этих случаях при встрече запрещенного символа будет соответсвенно либо брошено исключение, либо символ не попадёт в результирующую строку, либо будет заэскейплен, либо будет пропущен в результат. Вместе с Qt и implicit sharing, всё проверяется и приводится к нужным типам почти мгновенно, так как нет лишних копирований, а только один проход при присваивании/другом изменении.
При этом в HTML-вывод пользователю не может попасть строка, у которой HtmlStrategy — это Ignore, что гарантирует система приведения типов во время компиляции.
Действительно… Отдыхаю на проекте otvet.mail.ru… Если бы не большая посещаемость, ноги бы моей там не было. На сайте уже несколько лет не видно никаких изменений в плане нового функционала/исправляемости багов =(
Большое спасибо автору за сообщение о проблеме. Мы всегда просим сообщать нам о таких дырках заранее, и в данном случае zorgrhrd поступил совершенно правильно, что написал нам. То, что проблема не была закрыта сразу, чисто наша вина. В ситуации внутри разобрались, выводы сделали, надеюсь больше таких важных сообщений служба поддержки не пропустит. И да, дырку конечно закрыли.
Пассивная XSS на mail.ru и готовый exploit