Безопасность и конфиденциальность¶
Узнайте, как сделать формы безопасными и сохранить данные пользователей в тайне.
Создавая форму, вы работаете с данными пользователя. Ваша главная задача - обеспечить конфиденциальность и безопасность передачи пользовательских данных. Давайте посмотрим, что для этого можно сделать.
Безопасная форма означает, что все данные зашифрованы, хранятся в безопасности, и несанкционированный доступ к ним невозможен.
Для обеспечения конфиденциальности сохраняйте только необходимые данные, сохраняйте личные данные только после получения согласия, обеспечивайте полный контроль пользователя над своими данными и никогда не передавайте данные пользователя другим лицам без его согласия.
Убедитесь, что ваша форма безопасна¶
Прежде всего, необходимо запрашивать как можно меньше данных. Не запрашивайте данные, которые вам не нужны, и всегда сомневайтесь, нужны ли вам все запрашиваемые данные. Меньшее количество данных означает меньший риск, меньшие затраты и меньшую ответственность. Кроме того, сокращение количества полей в форме делает ее менее сложной, более удобной для заполнения и позволяет снизить количество отказов от заполнения.
Всегда используйте HTTPS, особенно для страниц, содержащих форму. При использовании HTTPS данные шифруются при получении от сервера и при возвращении на сервер.
Допустим, вы сидите в кафе, пользуясь общедоступным Wi-Fi. Вы открываете сайт электронной коммерции и вводите данные своей кредитной карты, чтобы что-то купить. Если сайт использует протокол HTTP, то любой человек (обладающий соответствующими навыками), находящийся на этом же сайте, может увидеть информацию о вашей кредитной карте. Если же на сайте используется протокол HTTPS, то данные шифруются и, следовательно, защищены от посторонних.
На своем сайте также следует позаботиться о перенаправлении всех HTTP-запросов на HTTPS. Подробнее о как перенаправить весь трафик на HTTPS.
Помочь пользователям сохранить конфиденциальность своих данных¶
В первом модуле вы узнали о двух возможных способах передачи данных: с помощью GET
запроса и с помощью POST
запроса.
При запросе GET
данные формы включаются в URL-адрес запроса в виде строки запроса. При отправке формы, использующей запрос GET
, браузер добавляет URL запроса, включающий данные формы, в историю просмотров. Удобно, если необходимо просмотреть прошлые отправки формы, например, для формы поиска. Не очень удобно, если отправляются конфиденциальные данные, и все, кто имеет доступ к истории браузера или локальной сети, могут увидеть эту информацию.
Используйте запросы POST
для всех форм, в которых могут быть представлены персональные или другие конфиденциальные данные. В этом случае данные будут видны только бэкенд-скрипту, обрабатывающему их.
А как насчет сохранения и обработки персональных данных непосредственно в браузере? Для хранения персональных данных в браузере можно использовать клиентское хранилище, например, localStorage
. С точки зрения конфиденциальности это менее чем идеальный вариант. Опять же, каждый, кто имеет доступ к браузеру, может прочитать эту информацию. Для хранения персональных данных следует использовать только зашифрованные значения.
Обеспечение безопасной регистрации и входа пользователей в систему¶
Аутентификация учетных записей пользователей - сложный вопрос с точки зрения конфиденциальности и безопасности. Возможно, лучше использовать стороннего поставщика идентификационных данных, а не создавать собственную безопасную систему аутентификации.
Узнайте больше о лучших практиках аутентификации учетных записей и управления паролями.
Если вы решили создать собственную систему аутентификации, обязательно следуйте лучшим практикам управления паролями:
- Никогда не храните и не передавайте пароли в виде обычного текста. Обязательно солить и хешировать пароли - и не пытайтесь изобрести свой собственный алгоритм хеширования.
- Убедитесь, что пользователи вводят надежные пароли.
- Не допускайте взлома паролей.
- Не принуждайте к обновлению паролей.
- Обеспечьте пользователям простоту смены или сброса паролей.
Помочь пользователям получить доступ к своим персональным данным¶
Во многих регионах действуют законы и нормативные акты, касающиеся защиты данных и конфиденциальности, в том числе CCPA в Калифорнии и PDPA в Индии. Каждый сайт, доступный в Европейском союзе (ЕС), должен соблюдать General Data Protection Regulation (GDPR), даже если сайт расположен не в ЕС.
GDPR устанавливает правила сбора и обработки персональных данных лиц, проживающих на территории ЕС. Для обработки персональных данных требуется согласие, пользователи могут в любой момент запросить хранящуюся у вас персональную информацию, а также вы должны официально объявлять об утечке данных. Это хорошо для пользователей, так как помогает обеспечить соблюдение их конфиденциальности. Подробнее о GDPR.
Убедитесь, что ваши пользователи знают, как вы планируете обрабатывать персональные данные. Прозрачность - это ключ к доверию. Пользователи всегда должны иметь возможность получить доступ, изменить и удалить все данные, которые вы для них сохранили.
Обеспечьте пользователям возможность обновлять свои персональные данные¶
Обеспечьте удобство обновления персональных данных пользователей, включая пароли, адреса электронной почты и имена пользователей. Уведомляйте пользователей об изменениях в сохраненных персональных данных и обеспечьте возможность отмены изменений. Например, после изменения адреса электронной почты отправляйте письмо на прежний и новый адреса электронной почты.
Разделите понятия "учетная запись пользователя" и "идентификационные данные пользователя", чтобы упростить реализацию предоставления идентификационных данных третьими сторонами. Разрешите пользователям менять имя пользователя и связывать несколько идентификаторов с одной учетной записью, например, если они регистрируются с помощью электронной почты и пароля, а затем регистрируются у стороннего поставщика идентификационных данных.
Обеспечьте пользователям возможность легко удалить свою учетную запись, включая все связанные с ней данные, и, если это необходимо, сделайте возможной загрузку данных. В некоторых регионах удаление учетной записи является законодательным требованием.
Ссылка на политику конфиденциальности на каждой странице с формой, особенно если обрабатываются персональные данные.
Требуйте дополнительного шага аутентификации, например, повторного ввода текущего пароля, для просмотра или изменения персональной информации на вашем сайте.
Подробнее: Web Application Privacy Best Practices.
Убедитесь, что все данные находятся в хорошем состоянии¶
В предыдущем модуле вы узнали о проверке на фронтенде. Проверка на фронтенде очень важна, но пользователи все равно могут отправлять недостоверные данные. В качестве следующего шага перед сохранением данных в базе данных необходимо выполнить проверку данных на внутреннем сервере. Это гарантирует, что недействительные данные не будут сохранены в базе данных.
Валидация помогает убедиться в правильности формата данных, однако доверять данным, введенным пользователями, все равно не следует. Как обеспечить безопасный вывод данных? Чтобы предотвратить Cross Site Scripting (XSS) и гарантировать, что все данные безопасно включать в HTML, необходимо санировать данные перед выводом.
Узнайте больше о sanitizing data before output и, по возможности, используйте Sanitizer API.
Убедитесь, что все сообщения поступают от реальных людей.¶
Для защиты данных существуют различные варианты предотвращения спама от ботов.
Первый вариант - использовать сервис, например reCAPTCHA, чтобы отличить реальных людей от ботов. Для этого необходимо разместить на странице сниппет JavaScript и добавить дополнительные атрибуты к кнопке Submit.
reCAPTCHA выполняет различные проверки, чтобы выяснить, являетесь ли вы человеком. Например, она может попросить вас идентифицировать изображения. Автоматизированное программное обеспечение, например бот, не может выполнить эти задачи и не сможет отправить форму.
Всегда следите за тем, чтобы средства защиты от спама были доступны. Опробуйте их с помощью программы чтения с экрана, а также используя только клавиатуру. Самая лучшая защита от спама бесполезна, если она делает форму непригодной для использования реальными людьми.
Honeypot¶
.
Другой вариант - использование так называемой "медовой точки": визуально скрытого поля формы. Человек не увидит поле honeypot, но боты заполнят его. На внутреннем сервере скрипт обработки может проверить, было ли заполнено поле. Если оно заполнено, то, скорее всего, это был бот, и его можно проигнорировать.
Существуют также такие сервисы, как Akismet, которые могут помочь вам в защите от спама. Фильтр Akismet работает, объединяя информацию о спаме, полученную на всех участвующих сайтах, и затем используя эти спам-правила для блокировки будущего спама. Akismet прозрачен для пользователя и отлавливает большую часть спама.
Ресурсы¶
Источник — Security and privacy