Рубрики
Uncategorized

Основы архитектуры безопасного приложения: разделение, конфигурация и доступ

Разработчики программного обеспечения сегодня рекомендуются сосредоточиться на строительстве, и это отличное. Мы претензием … Теги за безопасность, WebDev, DevOps, Nowizers.

Разработчики программного обеспечения сегодня рекомендуются сосредоточиться на строительстве, и это отличное. Мы получаем выгоду от культуры производителя, отношение «всегда быть доставкой», «совместное сотрудничество с открытым исходным кодом» и Bevy приложений, которые помогают нам приоритетировать и выполнять максимальную эффективность. Мы находимся в среде постоянного создания, где обе команды, так и сольные предприниматели могут быть максимально продуктивны.

Иногда эта производительность скорости пребывания показывает его недостатки.

Когда я узнаю больше о лучших практиках безопасности, я не могу не видеть все больше и больше приложений, которые просто не имеют подсказки. Недостаток осведомленности о безопасности, по-видимому, приведет к отсутствию приоритеты этих задач, которые не поддерживают непосредственно приведение продукта для запуска. На рынке, похоже, он стал более важным запустить удобный продукт, чем безопасный, с преобладающим отношением, «мы можем сделать безопасность позже».

Собивка совместно основанная на основе целесообразности, чем долговечность, является плохой способ создания приложений и отличного способа построить долговой долг. БЕЗОПАСНОСТЬ ДОЛГ ДОЛЖЕН, Нравится Техническая задолженность, накоплена путем создания (обычно поспешных) решений, которые могут затруднить обеспечение приложения позже. Если вы знакомы с концепцией «толкая влево» (или если вы читаете мой статью о конфиденциальных экспозиции данных ), вы узнаете, что когда дело доходит до безопасности, иногда нет версии « позже «это не ТОО поздно. Это стыд, особенно поскольку после некоторых основных практик безопасности с высокой доходностью выгод в начале в процессе развития не принимает значительно больше времени, чем не Следуя за ними. Зачастую это сводится к тому, чтобы иметь некоторые основные, но важные знания, которые позволяют сделать более безопасное решение.

Хотя архитектура приложений сильно зависит от архитектуры, широко применяются несколько основных принципов. Эта статья предоставит обзор высокого уровня областей, которые я надеюсь, поможет указывать разработчикам в правильном направлении.

Должна быть причина, по которой мы называем это приложение «Архитектура», и мне нравится думать, что это потому, что архитектура программного обеспечения аналогична некоторым основным способам архитектуры здания. (Или, по крайней мере, в моем абсолютном нулевом опыте создания зданий, как я представляю собой довольно утилитарное здание.) Вот как мне нравится суммировать три основных пункта архитектуры защищенного применения по созданию:

  1. Отделение хранения
  2. Индивидуальная конфигурация
  3. Управляемый доступ и область пользователей

Это только точка прыжка, предназначенная для того, чтобы начать нас на правой ноге; Полная картина полностью реализованного положения безопасности приложения включает в себя участки за пределами объема этого поста, включая аутентификацию, регистрацию и мониторинг, интеграцию, а иногда и соблюдение.

1. Отделение хранения

Концепция разделения, от точки зрения безопасности, относится к хранению файлов, которые обслуживают разные цели в разных местах. Когда мы строительствуем наше здание и решите, где все номера идут, мы также создаем вестибюль на первом этаже и поместите административные офисы на более высоких этажах, возможно, от главного пути. Хотя оба являются комнаты, мы понимаем, что они служат разным целям, имеют разные функциональные потребности и, возможно, очень разные требования к безопасности.

Когда дело доходит до наших файлов, выгода, возможно, простой для нас понять, если мы рассмотрим простую структуру файлов:

application/
├───html/
│ └───index.html
├───assets/
│ ├───images/
│ │ ├───rainbows.jpg
│ │ └───unicorns.jpg
│ └───style.css
└───super-secret-configurations/
└───master-keys.txt

В нашем упрощенном примере скажем, что все изображения наших приложений хранятся в Приложение/Активы/Изображения/ каталог. Когда один из наших пользователей создает профиль и загружает их изображение к нему, эта картина также хранится в этой папке. Имеет смысл, верно? Это изображение, и вот где идут изображения. В чем проблема?

Если вы знакомы с навигацией по файловой структуре в терминале, вы, возможно, видели этот синтаксис перед: ../../ Отказ Два точками являются удобным способом сказать: «Продолжай один каталог. «Если мы выполняем команду CD ../../ в Images/ каталог нашей простой структуры файлов выше, мы погрузились на активы/ , затем снова до Корневой каталог, Приложение/ . Это проблема из-за крошечной уязвимости. Путь обход Отказ

Хотя синтаксис точечного точка экономит нас, он также вводит интересное преимущество, на самом деле не нужно знать, что называется родительский каталог, чтобы перейти к нему. Рассмотрим скрипт полезной нагрузки атаки, доставленный в Изображения/ Папка нашего небезопасного приложения, которое пошло на один каталог, используя CD ../ А потом отправил все, что он нашел злоумышленником, повторю. В конце концов, он достигнет каталога корневого приложения и получить доступ к Супер-секретные конфигурации/ папка. Фигово.

В то время как другие меры, безусловно, должны быть установлены для предотвращения прохождения пути и связанных с ними уязвимостей для загрузки пользователей, простейшая профилактика, безусловно, является разделение хранения. Основные прикладные файлы и активы не должны сочетаться с другими данными, а особенно не с Пользовательский ввод . Лучше всего сохранять загруженные пользователем файлы, а также журналы активности (которые могут содержать сочные данные и могут быть уязвимы для атак для инъекций) отдельно от основного приложения.

Разделение может быть достигнуто несколькими способами, такими как использование другого сервера, другой экземпляр, отдельный диапазон IP или отдельный домен.

2. Индивидуальная конфигурация

В то время как проводить время на настройке может быть нахмущено в некоторых сценариях, когда речь идет о разработке быстро, одна область, которую мы определенно хотим настроить, является настройками конфигурации. Безопасность ошибка Перечислено в топ-10 OWASP в качестве значительного количества инцидентов безопасности, поскольку сервер, брандмауэр или учетная запись администратора работают в производстве с настройками по умолчанию в Play. После открытия нашего нового здания мы надеемся, что будут более осторожны, чтобы мы не оставили ключи в замках.

Обычно жертвы атак, связанные с настройками по умолчанию, не предназначены специально. Скорее, они находятся с помощью автоматических инструментов сканирования, которые злоумышленники работают над многими возможными целями, эффективно подталкивающимися на многих различных системах, чтобы увидеть, какая-либо переворачивается и подвергается воздействию полезного использования. Автоматизированная природа этой атаки означает, что для нас важно просмотреть настройки для каждой части нашей архитектуры. Даже если отдельный участок не кажется значительным, оно может предоставить уязвимость, которая позволяет злоумышленнику использовать его как шлюз в наше большее приложение.

В частности, изучите компоненты архитектуры для без примерных областей, таких как:

  • Учетные записи по умолчанию, особенно с паролями по умолчанию, оставленные в обслуживании;
  • Пример веб-страниц, учебные приложения или данные образца, оставленные в приложении;
  • Ненужные порты, оставленные в обслуживании или портам, оставленные открытыми для Интернета;
  • Неограниченные разрешенные методы HTTP;
  • Конфиденциальная информация, хранящаяся в автоматических журналах;
  • Настроенные разрешения по умолчанию в управляемых службах; и,
  • Списки каталогов или чувствительные типы файлов, оставленные доступными по умолчанию.

Этот список не является исчерпывающим, а конкретные компоненты архитектуры, такие как облачные хранения или веб-серверы, будут иметь другие функции, которые могут быть настроены и, таким образом, должны быть просмотрены. В целом, мы можем уменьшить поверхность атаки нашего приложения, будучи минималистами, когда речь идет о компонентах архитектуры. Если мы используем меньше компонентов или не устанавливайте модули, нам не нужно, у нас будет меньше возможных точек входа на атаку для настройки и защиты.

3. Управляемый доступ и область пользователей

Одна из более сложных проблем безопасности для проверки в приложении ненадлежащим образом настроен контроль доступа. Автоматизированные инструменты тестирования имеют ограниченные возможности находить области приложения, чтобы один пользователь не должен иметь доступ к доступу, и это часто осталось вручную отзыв обзора или исходного кода, чтобы обнаружить. Рассматривая эту уязвимость в начале работы в жизни программного обеспечения, когда принимаются архитектурные решения, мы снижаем риск, который становится проблемой, которая сложнее исправить позже. В конце концов, мы бы не просто оставили наши главные ключи от досягаемости на высоком выступе и надеюсь, что никто не приходит с лестницей.

Сломанный контроль доступа Перечислено в Top 10 Top 10, которая входит в более подробную информацию о различных формах. В качестве простого примера рассмотрим приложение, которое имеет два уровня доступа: администраторы и пользователи. Мы можем создать функцию для нашего приложения, такую как возможность умерить или запретить пользователям, с целью того, что только администраторы будут разрешены для его использования. Если мы знаем о возможности контроля доступа неправильно или подвиги, мы можем решить построить функцию модерации в совершенно отдельной области от доступного пользовательского пространства, например, в другом домене, или как часть модели, которую пользователи, которые пользователи Не делитесь. Это значительно снижает риск, который доступом контроль заверения или высота уязвимости привилегий может позволить пользователю неправильно получить доступ к функции модерации.

Прочный контроль доступа в нашем применении, конечно, требует эффективности дальнейшей поддержки, и мы должны рассмотреть, как факторы, такие как чувствительные токены или ключи, прошедшие как параметры URL, или будет ли контроль безопасным или незаменимым или незаменимым. Тем не менее, рассмотрев разрешение на архитектурный этап, мы можем облегчить реализацию дальнейших подкреплений.

Основы безопасности для максимальной выгоды

Подобно избегание предотвращения стойки технического долга, выбирая хорошо бывающую структуру, разработчики могут избежать долговых долгов, становимся осознавая общие уязвимости и простых архитектурных решений, которые мы можем заставить их смягчить. Для гораздо более подробного ресурса о том, как выпекать безопасность в наши приложения с самого начала, Стандарт проверки безопасности приложений OWASP является прочным гидом.

Оригинал: «https://dev.to/victoria/secure-application-architecture-basics-separation-configuration-and-access-28a7»