2015-10-20 3 views
0

В настоящее время я немного изучу, что я могу сделать, чтобы защитить данные cookie, которые я отправляю своему клиенту. Оказывается, все сводится к подписанию моих куки - неважно, не так ли?Выбор тайны

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

В любом случае я схожу с темы.

Я работаю с PHP и NodeJS. Каковы наилучшие способы выбрать секрет, который навсегда останется в секрете?

Мои первые мысли: - секретный ключ моего сервера - случайная строка, поместить в текстовый файл вне мирового доступа

Мое приложение в настоящее время работает Yii1, но я переключение на Laravel 5.

+1

просто создайте случайный вариант при установке и сохраните его в db. Тогда у eash install будет уникальный секрет, и единственным человеком, у которого есть доступ к нему, является владелец сайта. – Steve

+0

Я бы не сохранил это в базе данных, я бы предложил сохранить его в файловой системе ** вне корневого документа **. –

ответ

1

Оказывается, все это сводится к подписанию моих печеньков - не большое дело, не так ли?

Будьте очень осторожны здесь. Многие люди пытались реализовать такую ​​функцию раньше, только до render their apps remotely exploitable.

Я бы почти поспорил, что вы не должны писать это сами. Одна из возможностей, которую я создаю для библиотеки библиотеки libsodium, - an authenticated encryption wrapper for HTTP cookies.

Каковы лучшие способы выбора тайны, которая навсегда останется в секрете?

Самый простой: использование 32 байт от /dev/urandom, хранящихся в файле конфигурации за пределами вашего корня документа.

Большинство защищенных: Use a HSM, поэтому ваши ключи никогда не доступны, даже если злоумышленник получает root на вашем сервере.

+0

Ну, я действительно планировал использовать какую-то библиотеку; Я решил, что кто-то осуществит надежное решение. На самом деле, Халит, похоже, то, что я искал. Но это от того, чтобы просто смотреть на него около десяти минут. Но был бы способ без neeidng libsodium? Причина. Возможно, я хочу портировать Win32. Могу ли я гарантировать совместимость? –

+1

Я также просто прочитал CVE. Я ... должен сказать, мне жаль разработчиков. Какая большая дыра, которая действительно есть. Но это заставило меня понять, что вы имели в виду. Я буду стараться избегать str_shuffle() таким образом. :) –

+0

Эпилог: после выхода электронной почты они быстро удалили этот класс из своего репозитория. –

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