2013-09-05 5 views
0

Я сегодня опробовал учебник по рельсу и был смущен этой частью генерации секретного кода.Что такое secret_token в rails?

http://ruby.railstutorial.org/chapters/static-pages#top

require 'securerandom' 

def secure_token 
    token_file = Rails.root.join('.secret') 
    if File.exist?(token_file) 
    # Use the existing token. 
    File.read(token_file).chomp 
    else 
    # Generate a new token and store it in token_file. 
    token = SecureRandom.hex(64) 
    File.write(token_file, token) 
    token 
    end 
end 

SampleApp::Application.config.secret_token = secure_token 

Может кто-нибудь объяснить мне, что необходимость этого файла. Какова цель этой 64-разрядной секретной строки.

+0

Похоже, что используется для смягчения несанкционированного доступа (см. Http://stackoverflow.com/questions/4241441/rails-secret-token) через какую-либо форму HMAC. Это полезно, потому что повышает уверенность в том, что данные от клиента (в файлах cookie или даже в скрытом поле) генерируются * только * конкретным сервером и поэтому могут быть безопасно использованы. Однако я не уверен, что RoR также защищает от повторных атак с помощью этого подхода. – user2246674

ответ

2

Как говорится в комментариях к этому файлу:

Вашего секретный ключ используется для проверки целостности подписанного печенья.

Подписанные файлы cookie используются для хранения информации о сеансе или того, что вы хотите выделить пользователю и только тому пользователю.

См. here для получения дополнительной информации о сеансах и куках.

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