2012-02-17 2 views
3

Я использую веб-службы Amazon в своем приложении php. Безопасно ли хранить секретные токены доступа aws в файле config.php, которые связаны с моей веб-службой php?Хранение секретных ключей в php-файлах

Мне не удалось скачать файл, чтобы посмотреть содержимое, но разве нельзя использовать пакетный снифер или что-то еще и уметь читать ключ и передавать фразу?

Я знаю, что Amazon рекомендует использовать торговый автомат-токен для создания временных учетных данных, вместо того, чтобы напрямую использовать aws-Creds, но мы надеемся, что сможете пропустить его реализацию.

ответ

1

Если ваш файл config.php не выдает токены во время его запуска, вы должны быть в безопасности. Чтобы принять дополнительные меры предосторожности, вы можете поместить файл config.php ниже корневого каталога вашего сайта, чтобы пользователь даже не смог попытаться запустить этот файл.

Ваш php выполняется на сервере, и до тех пор, пока на клиент не будет отправлен вывод, содержащий токены, содержимое этого файла никогда не будет отправлено клиенту. Таким образом, у них не будет возможности прочитать файл, потому что содержимое никогда не покидает сервер, а только вывод от запуска скрипта.

1

Нет. Это невозможно, поскольку сценарий работает только на стороне сервера, прежде чем доставлять контент клиенту.

Единственное возможное нарушение, если кто-то взломал сам сервер и украл файл из файловой системы.

+0

Наиболее успешные атаки на сервере. – zaph

3

Что касается «загрузки файла PHP», Apache предотвратит это, но вы обязательно должны хранить файл PHP за пределами корня документа, поэтому он не доступен для Интернета в первую очередь (и требует () это на стороне сервера, если необходимо).

Что касается «обнюхивания пакетов», защищенные соединения предотвращают это. Просто убедитесь, что вы используете HTTPS.

-1

В дополнение к вышеприведенным рекомендациям (для хранения ваших конфигураций за пределами общедоступного каталога веб-сайта), это хорошая техника для шифрования ваших паролей/секретов, а не хранения их в виде обычного текста в любом месте (особенно при использовании файлов, отличных от php для хранения пароли, такие как .env или *.yml и т. д.). Это довольно легко подвергать уязвимые данные по неверной веб-сервера, чтобы Github совершали и т.д.

Больше чтения на этом: https://blog.fortrabbit.com/how-to-keep-a-secret

+0

Где вы безопасно сохраните ключ шифрования? – zaph

+0

@zaph Невозможно полностью сохранить ключ шифрования, поскольку он хранится в одной и той же базе кода (очевидно, не в том же файле конфигурации). Этот метод скорее обфускации, чем реального шифрования, но, как я уже сказал, может помешать секретам легко разоблачать в случае неправильной конфигурации сервера и т. Д. – elena

Смежные вопросы