Почему Laravel меняет значение cook ie для каждого запроса? - PullRequest
0 голосов
/ 12 января 2020

Я понимаю, что session_id необходимо восстановить после входа пользователя, чтобы предотвратить атаку с фиксацией сеанса. И session_id должен быть случайной строкой, чтобы предотвратить атаку, чтобы перехватить ее.

Так что Laravel нужно что-то для шифрования session_id.

Но почему Laravel выбирает шифрование вместо хеширования session_id?

Я проверяю документацию, что Laravel использует шифрование AES для сеанса.

Но все же, почему Laravel выбирает метод шифрования, который выдает другое значение каждый раз после шифрования session_id ?

Что не так с методом шифрования, который создает фиксированное значение для session_id, а затем устанавливает его для этого cook ie?

Почему значение cook ie для session_id равно меняли каждый раз для нового запроса?

Ответы [ 4 ]

1 голос
/ 12 января 2020

Я принял ответ Даниала Сандиело.

Значение повара ie зашифровано и содержит 2 вещи - session_id и хеш-строку HMA C.

HMA C -хэшированная строка хэшируется на сервере с использованием APP_KEY: HMA C (session_id, APP_KEY). Затем сервер использует AES для шифрования и отправки его на клиентскую сторону.

Шифрование AES создает разные шифротексты даже с одним и тем же открытым текстом с использованием одного и того же ключа.

Когда зашифровано значение cook ie отправляется обратно на сервер, сервер сначала расшифровывает его, чтобы получить session_id и хеш-строку HMA C. Затем он будет использовать APP_KEY для HMA C -ha sh session_id, чтобы увидеть значение результата, совпадающее с возвращенной хеш-строкой HMA C или нет.

Если оно не совпадает, то это означает Идентификатор сеанса изменяется на стороне клиента.

И значение сеанса Cook ie изменяется для каждого запроса, потому что шифрование AES создает разные шифротексты даже с одним и тем же открытым текстом с использованием одного и того же ключа.

0 голосов
/ 12 января 2020

Водитель использовал здесь вопросы.

Драйвер cookie хранит всю информацию в файле cook ie, и поэтому Laravel должен иметь возможность дешифровать это значение, чтобы прочитать его, и значение меняется каждый раз, потому что сеанс изменяется при каждом запросе, в результате в разных зашифрованных данных и, следовательно, зашифрованная строка, которую вы видите в cook ie, отличается для каждого запроса.

Однако при использовании файлового драйвера (или любого другого драйвера, кроме файла или массива) Laravel по-прежнему необходимо иметь возможность прочитать идентификатор сеанса в виде простого текста (поэтому шифрование не хэширует), чтобы найти его в данных хранить, но сохраняет данные в файле / базе данных / redis, который должен сохранять значение cook ie одинаковым в течение всего сеанса, поскольку идентификатор сеанса не изменяется.

Подробнее о всех драйверах и где данные хранятся в документации de .

0 голосов
/ 12 января 2020

Laravel меняет его из-за конфиденциальности .....

0 голосов
/ 12 января 2020

Вопрос связан не только с Laravel, но скорее с шифрованием Dynamic против Static независимо от языка и структуры.

Вы можете зашифровать значение, но не можете га sh а га sh ценность. Поскольку данные будут использоваться позже, мы сохраняем их в зашифрованном виде, чтобы впоследствии их можно было дешифровать.

Dynami c Шифрование обеспечивает дополнительную защиту, поскольку не только ключи шифрования но также изменение конфигурации криптосистемы для каждой передачи данных. Внутренний алгоритм шифрования (например, AES-256 или национальный алгоритм) заключен в внешний алгоритм шифрования Dynami c. Когда передача данных завершена, алгоритм шифрования отбрасывается, что не позволяет вводить мастер-ключи для проверки данных.

Cryptanalysis (взлом кода) обычно требует шифрования больших объемов данных с тем же методом. Поскольку шифрование Dynami c постоянно мутирует, криптоанализ становится практически невозможным.

Здесь - хорошее прочтение о том, почему используется шифрование Dynami c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...