Можно ли построить здание без проекта? Можно, если оно не слишком большое. Например, шалаш или скворечник. В более сложных случаях скорее всего придётся учитывать рельеф местности и особенности почвы, где здание будет стоять, характеристики материалов, из которых оно будет построено, и не следует забывать об эстетической привлекательности того, что получится. Проектируя здания, мы опираемся на знания, накопленные бесчисленными поколениями строителей и архитекторов, используем в своей работе их успешные находки и стараемся не повторять их ошибок. Этот опыт частично преобразовался в научные теории, а какая-то его часть продолжает оставаться на уровне эвристики.
В тестировании дизайн, или проектирование, тестов также занимает центральное место. Выполняем ли мы тесты вручную или автоматизируем их, используем ли мы тестирование методом свободного поиска или фиксируем тесты в виде готовых к повторному использованию сценариев -- во всех случаях сначала нам приходится эти тесты спроектировать, то есть придумать. И чтобы не потеряться в хаосе бесконечного количества тестов, которые можно придумать, нам нужен систематический подход к отбору некоторого ограниченного количества тестов, которые достаточно выполнить.
Тестирование, как и программная инженерия в целом, достаточно молодая дисциплина. По этой причине практически всё знание в области тестирования имеет эвристическую форму. На тренинге мы рассмотрим различные эвристики, начиная от известного всем тестировщикам разбиения данных на классы эквивалентности и до тестирования на основе рисков.
Тестирование веб-приложений интересно тем, что оно требует наиболее широкого владения различными видами тестирования. Одно из ключевых мест занимает тестирование защищенности (security testing) или проверка отсутствия известных уязвимостей.
Почему тестирование защищенности имеет такое большое значение именно для веб-приложений?
Веб-приложения ориентированы на массовое использование, поэтому сбои в работе, вызванные действиями злоумышленника, могут оказать негативное воздействие на большое количество ни в чём неповинных пользователей.
Веб-приложения могут хранить конфиденциальную информацию, утечка этих данных может иметь очень серьёзные последствия.
Доступ к веб-приложению имеет множество “недоверенных” пользователей, при этом владельцы или разработчики приложения как правило не могут контролировать или ограничивать их действия.
Обмен информацией между браузером и сервером происходит по открытым каналам с использованием открытых протоколов, поэтому сложно контролировать данные, передаваемые клиентами.
Разработка веб-приложений не всегда ведётся с должным вниманием к обеспечению защищенности и надёжности, потому что рынок в первую очередь требует “быстро”!
Разумеется, тестирование защищенности не ограничивается тестированием самого веб-приложения. Уязвимость может находиться в веб-сервере, операционной системе, почтовой системе, ftp-сервере или ещё где-то. Но задача создания защищенного окружения в большей степени находится в зоне ответственности системных администраторов, а вот защищенность вашего собственного веб-приложения -- целиком на совести его разработчиков и тестировщиков.
На тренинге мы рассмотрим как общие принципы компроментации защиты веб-приложений, так и отдельные наиболее распространенные виды уязвимостей, которые могут быть использованы даже не слишком квалифицированным злоумышленником, что существенно повышает вероятность их эксплуатации.