Драйвер сеанса PHP CodeIgniter для безопасного хранения в сеансе

Я пытаюсь разработать безопасное приложение для хранения конфиденциальных документов, которые необходимо зашифровать. Я хочу использовать Azure Key Vault для шифрования / дешифрования данных в моей БД. В Key Vault после отправки учетных данных вы получаете токен доступа, который вам нужно как-то надежно хранить, чтобы выполнять вызовы API. Единственное решение, которое я могу придумать, - это сохранить их как переменную сеанса. С CodeIngiter вы можете указать драйвер сеанса как файлы, базу данных, redis или memcache. Я подумал, если бы я использовал redis или memcache в качестве драйвера, означало бы это, что переменные сеанса хранятся в памяти вместо файла или базы данных, к которым может получить доступ злоумышленник? Сделало бы это более безопасным? Я пока мало что знаю о memcache или redis. Или есть лучший способ обрабатывать эти токены доступа.

Спасибо

Вы можете сохранить это как файл? Затем просто поместите его вне корня документа, и он будет в безопасности

Alex 01.04.2018 20:59

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

Geoff L 01.04.2018 22:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
160
1

Ответы 1

Во-первых, позвольте мне сказать, что я мало знаю о лазурном и используемых в нем токенах. Что я могу сказать, так это то, что если это что-то вроде API Google, которое дает вам ключ .p12 (файл), вы можете просто разместить файл вне корня документа.

Пример:

Это мой сайт, все мои общедоступные скрипты и файлы (которые не защищены через .htaccess) находятся в папке /HTML/ (иногда это называется public_html) и действует как корень моего документа, например. $_SERVER['DOCUMENT_ROOT'] (/opt/www/prezent/mysite.com/HTML/).

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

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

Конечно, все это предполагает, что вы можете сохранить свой токен в файл.

Благодарю за ваш ответ. Хорошо, я понимаю, о чем вы говорите. Да, если бы он был сохранен в файле, он определенно был бы выше public_html. Но что, если сервер скомпрометирован: каким-то образом кто-то получает доступ к серверу и всем файлам на нем. Хранение в файле в этом случае будет небезопасным. Таким образом, идея с хранилищем ключей заключается в том, что информация для расшифровки ваших данных находится полностью вне офиса. К сожалению, поскольку пользователи хотят получить доступ к своим данным, вам нужно как-то сохранить токен доступа. Я спрашиваю, использовал ли я memcache, чтобы поместить это в память вместо файла, если это будет защищено от атаки.

Geoff L 01.04.2018 22:50

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

Alex 01.04.2018 23:02

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

Alex 01.04.2018 23:09

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

Geoff L 01.04.2018 23:46

Другие вопросы по теме