Как тестирование улучшает безопасность |
25.06.2019 15:34 |
Автор: Дейв Вестервельд (Dave Westerveld) Уязвимости безопасности и сохранности данных – наибольшие риски, с которыми сталкивается любой продукт. Один публичный инцидент может разорить компанию, или, как минимум, нанести по ней серьезный удар – это помимо урона, нанесенного командному духу. Логично сделать вывод, что тестирование безопасности – это очень важно. Однако не думаю, что вы пробовали в нем разобраться. Это довольно сложный, запутанный мир, и для того, чтобы стать эффективным тестировщиком безопасности, понадобится много специальных знаний и высокий уровень технической подготовки. Не у всех есть время или склонность к изучению необходимого минимума для этого рода тестирования, но это не значит, что мы не можем помочь повысить безопасность. Хорошее тестирование дает на выходе более безопасный продукт. Множество угроз безопасности – межсайтовый скриптинг, сниффинг пакетов, SQL-инъекции – вы не найдете без хотя бы некоторых специальных знаний, но этим тестирование безопасности не ограничивается. Понятный код Если вы можете понять код, вам гораздо легче увидеть возможные уязвимости безопасности во время код-ревью. Чистый код также упрощает работу инструментам анализа безопасности – им становится легче искать проблемы и недостатки. Тестирование, конечно, может сделать код более понятным. Даже если вы не разбираетесь в программировании, вы можете этому помочь. Посмотрите на код-ревью, и даже если вы не знаете, как писать код, вы должны быть способны следить за тем, что в нем происходит. Если переменные, методы и классы хорошо названы, а код внятно организован, у вас должно появиться хотя бы минимальное представление о том, что происходит. Я сейчас не говорю о поиске багов во время код-ревью – только о базовом понимании, о чем этот код говорит. Если вы не можете даже этого, это может быть признаком того, что код без нужды усложнен, или что его элементы плохо поименованы и структурированы. Не надо быть разработчиком, чтобы помочь команде добиться более внятного кода. Иногда все, что требуется – это спросить, почему мы делаем это именно так? Что происходит здесь? Вы поразитесь, но такие простенькие вопросы могут помочь выявить непонятный код, и даже если они этого не делают – вы узнаете о системе чуть-чуть больше, а это само по себе неплохо! Исследовательское тестирование Многие уязвимости безопасности не требуют знаний профессионального хакера для обнаружения. К примеру, прочитайте эту статью о подборе паролей с использованием Google. Это требовало минимальных знаний о том, как пользоваться Google, и людям не понадобилось ничего технически сложного, обычно ассоциирующегося со взломом защиты. Поиск путей, при помощи которых мы можем случайно сделать частную информацию доступной – это исследовательское, креативное упражнение ума. Подобный навык сильно развит у любого хорошего тестировщика, и именно его мы будем использовать, чтобы помочь предотвратить проблемы безопасности. Подумайте о необычных способах, при помощи которых люди могут использовать ваше приложение, или о том, как они могут попытаться обойти ваши ограничения. Хорошее исследовательское тестирование может выявить массу уязвимостей безопасности. Само знание, что на код будут пристально смотреть, используя подобный подход, может принести пользу всей команде разработки – коллеги начнут принимать во внимание тех неидеальных пользователей, которых может заинтересовать наш продукт. Отслеживание Конечно, упор на качество может повысить безопасность приложения и рядом других способов, но несмотря на это убедиться, что дыры безопасности полностью отсутствуют, очень трудно, если вообще возможно. Здесь в игру вступает мониторинг. Нужно обдумать, как мы будем обнаруживать и оперативно решать проблемы с безопасностью, с которыми мы можем столкнуться. Размышления, что может пойти не так, и что мы можем проверить, чтобы узнать, что это произошло – это тоже задача тестировщика, и еще один способ, которым тестирование повышает безопасность приложения. Итак, не забывайте про важность целевого тестирования безопасности приложений, но всегда держите в уме, что наибольший вклад в безопасность продукта вносит его высокое качество. Оно, как и чистый код, не гарантирует безопасность, но может помочь ее повысить! |