Простота атаки Billion Laughs сравнима только с ее эффективностью. Основной смысл состоит в эксплуатации расширяемости XML-сущностей путем создания рекурсивного определения, которое в результате разворачивания занимает огромный объем памяти.
А пока просто имейте в виду, что проверки должны выполняться в таком порядке. •Проверка длины. Находится ли длина ввода в ожидаемом диапазоне? • Лексическая проверка содержимого. Содержит ли ввод корректные символы и имеет ли он подходящую кодировку? • Синтаксическая проверка. Правильный ли формат у ввода?
Проблемы с безопасностью принято считать страшными и сложными, но если поставить во главу угла проектирование, сложность внезапно исчезает. Это в основном объясняется тем, что грань между обычными программными дефектами и ошибками безопасности стирается, если уделять внимание предметной области, а не выбору контрмер.
• Проектирование ПО — главное, что интересует разработчиков, оно лежит в основе их умений. Это позволяет легко внедрить концепции безопасности через проектирование. • Если сосредоточиться на проектировании, вопросы, относящиеся к бизнесу и безопасности, будут иметь равный приоритет в глазах как разработчиков, так и специалистов в предметной области. • Выбирая подходящие концепции проектирования, специалисты, не имеющие отношения к безопасности, могут писать безопасный код. • Если сосредоточиться на предметной области, можно автоматически устранить множество проблем с безопасностью.