Лучшие практики кибербезопасности начинаются с порога. Вот как интерфейсные разработчики обеспечивают безопасность.

В то время как кибербезопасность часто рассматривается с точки зрения баз данных и архитектуры, большая часть надежной системы безопасности опирается на элементы в области интерфейсного разработчика. Для некоторых потенциально разрушительных уязвимостей, таких как SQL-инъекция и Межсайтовый скриптинг (XSS), хорошо продуманный пользовательский интерфейс является первой линией защиты.

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

Управление вводом пользователя

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

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

Хотя это может быть не интуитивно понятно, даже данные, которые пользователь отправляет в свою область на сайте, должны быть проверены. Одним из самых быстроразвивающихся вирусов стал Червь Samy на MySpace (да, я старый), благодаря коду, который Сами Камкар смог внедрить на страницу своего профиля. Не возвращайте данные на свой сайт напрямую без тщательной проверки или дезинфекции.

Дополнительные инструкции по борьбе с инъекционными атаками см. В Шпаргалке по предотвращению инъекций OWASP.

Остерегайтесь скрытых полей

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

Если вам необходимо использовать скрытые поля, вот несколько полезных советов.

Внимательно относитесь к автозаполнению полей

Когда пользователь решает предоставить вам свою Личную информацию (PII), это должно быть осознанным выбором. Поля формы автозаполнения могут быть удобными - как для пользователей, так и для злоумышленников. Эксплойты с использованием скрытых полей могут собирать PII, ранее захваченные с помощью поля автозаполнения.

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

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

Сохраняйте общие ошибки

Хотя может показаться полезным сообщить пользователям, существует ли часть данных, это также очень полезно для злоумышленников. При работе с учетными записями, электронной почтой и личными данными наиболее безопасно ошибиться (🥁) в пользу меньшего. Вместо того, чтобы возвращать «Ваш пароль для этой учетной записи неверен», попробуйте более неоднозначный ответ «Неверная информация для входа» и избегайте раскрытия того, находится ли имя пользователя или адрес электронной почты в системе.

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

Будь плохим парнем

При рассмотрении вопроса о безопасности полезно сделать шаг назад, понаблюдать за информацией на дисплее и спросить себя, как злоумышленник сможет ее использовать. Играйте в адвоката дьявола. Если бы злоумышленник увидел эту страницу, какую новую информацию он получил бы? Отображает ли вид какие-либо персональные данные?

Спросите себя, действительно ли все на странице необходимо для настоящего пользователя. Если нет, отредактируйте или удалите его. Меньше - безопаснее.

Безопасность начинается с парадной двери

В наши дни гораздо больше совпадений между кодированием на передней и задней части. Чтобы создать всестороннее и безопасное приложение, полезно иметь общее представление о том, как злоумышленники могут попасть в переднюю дверь.