В Подкаст 58 (около 20 минут) Джефф жалуется на проблемы HTML.Encode()
, а Джоэл рассказывает об использовании системы типов для обычных строк и HTMLStrings:
Краткая политическая напыщенная речь о злом движках представления, которые не в состоянии HTML
кодировать по умолчанию. Проблема с
этот выбор дизайна заключается в том, что это не
«Безопасный по умолчанию», который всегда
неправильный выбор для фреймворка или API.
Забудьте закодировать немного
введенные пользователем данные в одном
вонючее место в вашем веб-приложении и
вы будете полностью владеть XSS.
Поверь в это. Я знаю, потому что это
случилось с нами. Многократно!
Джоэл утверждает, что со строго типизированным языком и правильным
рамки, это возможно (в теории)
полностью устранить XSS - это
потребует использования определенных данных
тип, тип, который является вашим единственным способом
отправить данные в браузер Эти данные
тип будет проверен при компиляции
время.
В комментариях к сообщению в блоге упоминается использование статического анализа для выявления потенциальных слабых мест. расшифровка Wiki еще не завершена.
Возможно ли реализовать предложение Джоэля без новой платформы ASP.NET?
Может ли быть возможно реализовать это просто путем создания подклассов каждого элемента управления и применения новых интерфейсов на основе HTMLString? Если большинство людей уже подклассируют элементы управления, чтобы лучше внедрить специфичные для сайта функциональные возможности, разве это не будет достаточно легко реализовать?
Стоит ли делать это вместо инвестиций в статический анализ?