Я хочу сделать легкий webapp поверх REST api, где пользователь должен пройти аутентификацию только один раз, с этого момента все запросы против веб-api, мы надеемся, будут выполнены, сохранив в некотором роде имя пользователя и пароль.
Я уже создал рабочий прототип, в котором храню имя пользователя и пароль в переменных сеанса, если первый запрос к REST api успешный, и с этого момента каждый запрос создается с информацией об аутентификации, полученной из переменных сеанса. Все идет нормально.
При таком подходе я понимаю, что кто-то с доступом к серверу сможет прочитать пароль. Есть ли какой-то способ в PHP, чтобы я мог следовать моему подходу с достаточной степенью безопасности?
Обновите дополнительную информацию:
Цель состоит в том, чтобы сделать визуализацию данных, полученных из API, на основе запросов к ним с разными данными, но не для того, чтобы пользователь вводил свое имя пользователя и пароль для каждой попытки. Таким образом, API полностью без гражданства, но веб-приложение с gui должно быть statefull.
В этом случае я не контролирую API Rest, поэтому каждый запрос к нему всегда потребует отправки имени пользователя и пароля API с помощью базового auth, нет альтернативных схем, таких как ключ API, токен сеанса или что-то в этом роде. Вот почему я должен сохранить имя пользователя и пароль до тех пор, пока длится сеанс пользователя, и я хотел знать, можно ли считать, что подход с сохранением их в переменных сеанса можно считать безопасным.
Пока вы не сохраняете состояние сеанса на сервере REST API, только на вашем веб-сервере clientapp, это кажется прекрасным с архитектурной точки зрения.
Если вы действительно должны использовать имя пользователя и пароль и не можете получить одноразовый токен, вы можете зашифровать их с помощью серверного ключа и дешифровать «на лету», когда вы отправляете их в API, поэтому даже если кто-то может захватить в сеансе они не могут получить имя пользователя и пароль без ключа на стороне сервера, но вы должны быть намного осторожнее с утечкой своего php-сессии в любом случае.
Безопасность сеансов PHP .
Выполните шаги, описанные в ответе на этот вопрос, за исключением того, что вы должны использовать HTTPS для всех взаимодействий, между пользователем и веб-сервером, а также между webapp и REST API.