Мы создаем приложение с использованием PHP и используем сторонние сервисы, для которых требуется секретный ключ API. У нас есть файл PHP, содержащий все эти определения ключей, которые мы затем импортируем (используя require_once), когда это необходимо.
Безопасен ли этот подход? Должны ли мы хранить ключи в другом месте?
Спасибо.
Что-то подобное было предложено сегодня для сценария оболочки. Ответ также действителен: убедитесь, что вы храните файл за пределами веб-корня или (если это невозможно) защитите его с помощью файла .htaccess
.
Я также хотел бы отключить () любые переменные, содержащие конфиденциальные данные после использования, поэтому даже полный дамп переменных (например, в отладочном сообщении) позже в этом скрипте может его обнаружить.
Он должен быть относительно безопасным, если файл недоступен из Интернета. Многие сайты будут размещать конфиденциальные файлы вне веб-сайта на сервере и просто включать их при необходимости в свое приложение.
Я всегда устанавливаю разрешения сертификатов и других файлов, содержащих конфиденциальные данные, так что только моя команда разработчиков и служба apache могут получить доступ к файлу. Это важно, если вы используете сервер, общий для большой организации, например, университет, где у многих людей могут быть разрешения на файл по умолчанию. Часто я видел разрешения на чтение, предоставляемые всем, чтобы веб-сервер мог получить доступ к файлу (так как он не является ни владельцем, ни правами группы на файл, остается только прочитать «другое»).
Вместо этого я гарантирую наличие группы, содержащей только мою группу разработчиков, и установите права на чтение / запись для файла в эту группу. Затем я использую ACL для добавления разрешения на чтение для службы APACHE. Вы должны использовать ACL, так как владелец и группа обычно настроены на группу разработчиков и разработчиков, не предоставляя вам никаких параметров для установки доступа для apache, кроме использования ACL.
Безопасность путем обфускации:
php.ini
в /usr/share/nginx/outsidehtml/keystorage/83738489384828838227.php setfacl -m user:nginx:x /usr/share/nginx/outsidehtml/keystorage/
php.ini
disable_class = ReflectionFunction disable_function = opcache_get_status, phpinfo, show_source, ini_get КОНТРОЛЬНАЯ РАБОТА
print_r(glob('/usr/share/nginx/outsidehtml/keystorage/*.*'));