Как выполнить проверку подлинности безопасности на сервере Rails - PullRequest
0 голосов
/ 25 апреля 2011

Я хотел бы использовать веб-сервер на основе Rails. Но я понятия не имею, как проверить личность пользователя.

Например, пользователь с именем «Гость» может выполнять такие действия, как GET и UPDATE, только для определенных таблиц, в то время как другой пользователь с именем «Администратор» может выполнять все возможные действия, такие как POST.

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

Итак, не могли бы вы рассказать мне, как проверить аутентификацию и как зашифровать пароль, введенный пользователем?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

Это, строго говоря, из моего личного опыта. Я перепробовал все предложенные жемчужины аутентификации и авторизации, упомянутые выше, но я всегда приходил к выводу, что не так просто работать самостоятельно, особенно когда ваши требования очень просты. Учтите это:

class ApplicationController < ActionController::Base
  before_filter :authentication

  def authentication
    redirect_to '/authentication_form' unless session[:logged_in]
  end

  def authentication_form
    ... render the form
  end

  def login
    if params[:username] == 'adam' && params[:password] == 'eva'
      session[:logged_in] = true
      redirect_to '/restricted_area'
    else
      render :action => 'authentication_form'
    end
  end
end

class RestrictedController < ApplicationController
  def index
    ... this action is now restricted
  end
end

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

if User.find_by_name_and_password(params[:username], params[:password])
  session[:logged_in] = true
...

Для авторизации вам необходимо сохранить идентификацию пользователей в хеше сеанса, что позволяет ограничивать доступ изнутри каждого действия (при условии, что контроллер является производным от ApplicationController)

Надеюсь, это поможет.

0 голосов
/ 25 апреля 2011

То, что вы, похоже, хотите, это аутентификация и авторизация.

Для аутентификации:
https://github.com/plataformatec/devise
https://github.com/vpereira/authlogic
https://github.com/thoughtbot/clearance

Для авторизации:
https://github.com/be9/acl9
https://github.com/ryanb/cancan

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