Атакуя приложение, хакер держит в голове некоторую его модель, меняющуюся по ходу проверки гипотез и включающую в себя критичные точки выполнения, способы воздействия на них и ожидаемую реакцию приложения. Дерево атак, реализуемых хакером, является набором достижимых путей в такой модели. Функциональность вторична для хакера, он мыслит «вне коробки» приложения и свою модель строит, исходя из необходимой ему «функциональности», которая позволит провести эффективную атаку.
Разрабатывая приложение, программист тоже держит в голове его модель, но несколько иную, обусловленную реализуемой архитектурой и направленную на реализацию необходимых фич. Каждая фича, реализуемая программистом, является набором юзкейсов, представляющих собой достижимые пути в его модели, которую он строит, исходя из функциональных требований, ограничивающих его определёнными рамками.
Обе модели формируют майндсеты — образы мышления и набор техник, используемых для реализации задуманного. Но что, если, вывернув это наизнанку, программист возьмёт на вооружение майндсет хакера для реализации основной функциональности, а к защите приложения подойдёт с привычной ему стороны фич и юзкейсов?
Доклад посвящён тому, как взять лучшее из обоих подходов для разработки «hackerproof»-приложений.