2013-06-25 3 views
0

Я создаю веб-приложение для блога в Rails, и поскольку мне нужен только один пароль, безопасно ли хранить этот пароль в виде простой рубиновой переменной, например. password = "foobar"? Или я должен поместить его в базу данных с правильным хешированием паролей?Ruby - хранит пароль как переменный сейф?

Имейте в виду, что это просто одного пароля Я говорю о

ответ

1

Сохранение паролей никогда не «безопасно» никогда, даже если они хэшируются и в БД. Я бы очень рекомендовал против этого, как если бы кто-нибудь получил доступ к серверу или даже код, с которым они могли бы легко получить ваш пароль. Кроме того, не записывайте свой собственный код хэширования пароля, мелкие ошибки могут серьезно подорвать вашу безопасность.

Мое предложение? Используйте Google или другого поставщика OAuth, таким образом, все, что вам нужно сделать, - это доверие к правилу Google. Это избавит вас от необходимости делать пароли прямо от вас.

+0

не только делает пароли самим собой, но очень опасно. Особенно для пользователей, которые везде используют один и тот же пароль. – Linuxios

+0

«все, что вам нужно сделать, - это доверие к правильному Google». Там большой скачок веры. –

0

Я думаю, что создать модель пользователя или даже полагаться на библиотеку, такую ​​как devise, похоже, будет больше убивать в вашем случае. Простой http auth должен быть достаточно хорош здесь. В зависимости от вашего вопроса относительно того, считается ли это безопасным, это зависит. Если вы единственный, у кого есть доступ к исходному коду (например, публичное репо github, ваш компьютер зашифрован, если он потерян), вы используете SSL & заголовок HSTS (чтобы предотвратить удаление SSL) для связи с вашим сайтом и вы используете секретные ключи для доступа к вашему серверу (т. е. никакого входа ssh), тогда я думаю, что вы, вероятно, все в порядке.

Вот пример HTTP AUTH в рельсах 4,0

$ http_basic_authenticate_with name: "dhh", password: "secret"

Например, контроллер продукта будет выглядеть так:

class PostsController < ApplicationController 
    http_basic_authenticate_with name: "dhh", password: "secret", except: :index 

    def index 
    render text: "Everyone can see me!" 
    end 

    def edit 
    render text: "I'm only accessible if you know the password" 
    end 
end 

Найти еще примеры here

+0

Я не мог больше не соглашаться, особенно с большим количеством nginx и нулевых дней apache, которые шли в последнее время, нет гарантии, что источник в безопасности. Более того, вы предполагаете, что они не используют общий хостинг, и в этом случае все ставки отключены. – Mgetz

+0

Ну, нулевые дни обычно означают, что все ставки все равно. То же самое касается крипто. Мне нравится идея полагаться на стороннего поставщика. – sybohy

+0

Принятые точки, если у них есть доступ к вашему серверу, они имеют доступ к вашему коду и могут изменять его по своему усмотрению. В этот момент вы находитесь в состоянии смягчения. Так что запутывание вашего пароля не собирается делать многое в любом случае. – Mgetz