Безопасность веб-приложения - передача учетных данных в API веб-сервиса
Я новичок в веб-разработке. Я выполнил довольно много командной строки и немного разработки на python, а также занимался веб-разработкой с использованием Drupal и Wordpress и статического html/css, но мне никогда не приходилось беспокоиться об управлении сессиями или входе в систему пользователей. Несколько случаев, когда это было необходимо, я просто использовал Drupal/Wordpress.
Я занимаюсь изучением Flask/ веб-разработок и у меня есть проект, который я начал. Это простое трехстраничное приложение, которое выполняет вызовы API-интерфейса XML другого сайта (я полагаю, это называется REST API). Сайт, который я буду называть, - это Adobe's Connect, на котором размещены электронные курсы и данные о студентах. Вот ссылка на их документацию по API для начинающих: http://help.adobe.com/en_US/connect/9.0/webservices/WS5b3ccc516d4fbf351e63e3d11a171dce72-7ff7_SP1.html
Мое приложение должно иметь возможность выполнять следующие действия: 1. Когда студент вводит свой идентификатор пользователя / пароль в форму в моем приложении Flask, я хочу вызвать API-интерфейс Connect и войти в него там (следовательно, имитировать Единая точка входа). 2. Затем я хочу, чтобы пользователь был перенаправлен на страницу со списком курсов, на которых он зарегистрирован (эти данные извлекаются из API Connect).
Мой вопрос / проблема касается безопасности сеансов и пользователей. Документация по API Connect рекомендует совершать звонки через URL. Это кажется немного странным для меня, но, возможно, это совершенно безопасно? Я думаю, я просто хочу убедиться, что я не передаю учетные данные пользователя "в открытом виде". Таким образом, убедитесь, что мой сайт использует https, а вызов по URL-адресу https (API Connect) является правильным способом сделать это?
У меня уже есть скрипт командной строки на Python, который успешно интегрируется с веб-сервисом Connect - я могу войти в систему пользователя, выйти из системы, сделать вызовы, чтобы вернуть данные. Мой следующий шаг - воссоздать это как веб-приложение.
Любые советы / советы с благодарностью.
1 ответ
Отправка учетных данных в URL безопасна только в том случае, если вы используете безопасный HTTP (т.е. https://...
). В документации по Adobe Connect, на которую вы ссылаетесь, упоминается об этом в заметке, но во многих примерах, которые они показывают, используется простой http://...
, Очень вводит в заблуждение.
После входа в систему вы получаете сеанс, который вы должны отправить вместо учетных данных с будущими запросами. Риск ниже с идентификаторами сеансов, но, тем не менее, неплохо также защитить идентификатор сеанса, отправляя все запросы по безопасному HTTP.
Тогда вам нужно решить вторую проблему. Учетные данные пользователя должны быть переданы с компьютера пользователя на ваш собственный сервер, прежде чем вы отправите их в Adobe Connect. Ваш сервер также должен быть защищен HTTP.
Наконец, точно так же, как Adobe Connect "запоминает" вас с помощью идентификатора сеанса, который вы передаете со всеми запросами, вам потребуется сеанс для каждого из ваших пользователей, чтобы каждый раз, когда они запрашивают страницу, вы их помните и знаете, что такое Adobe сеанс, чтобы использовать для запросов, которые вам нужно отправить.
Для своих собственных идентификаторов сеансов вы можете просто повторно использовать идентификатор сеанса Adobe Connection, вы просто отправляете его своему пользователю в файле cookie, а затем вы будете возвращать его каждый раз, когда они запрашивают страницу. Более надежное решение требует, чтобы вы генерировали свои собственные идентификаторы сеансов, которые отличаются от идентификаторов Adobe, и связывали свои сеансы с сеансами Adobe в своей таблице базы данных пользователей.
Существует чрезвычайно полезное расширение, называемое Flask-Login, которое управляет сеансами пользователей для аутентификации. Это может сэкономить вам время, если вы решите реализовать свои собственные пользовательские сессии.
Удачи.