Как правильно защитить таблицу базы данных профилей пользователей в ruby ​​on rails? - PullRequest
1 голос
/ 14 января 2012

Я создаю веб-сайт сообщества, где пользователи регистрируются и создают профили.Теперь, когда пользователь зарегистрировался, он может щелкнуть ссылку, чтобы перевести его в область редактирования профиля веб-сайтов.

Здесь он может указать свое имя, возраст, выбрать, день рождения и указать такие вещи, как личныестатистика, обо мне и т. д.

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

Интересно, как лучше всего разрешить такую ​​функциональность, но в то же время защитить мою базу данных?

Должен ли я устанавливать правила проверки максимальной длины среди прочего?Я не совсем уверен, как с этим справиться.

У меня есть выпадающие меню выбора, текстовые поля и множество текстовых полей, в которые будут вводиться данные о пользователе.

Как бы вы справились с этим и / или каков наиболее подходящий способ справиться с этим?

С уважением

Ответы [ 2 ]

1 голос
/ 14 января 2012

Самыми распространенными угрозами для поиска являются попытки повысить привилегии через этот класс.Например, если у вас есть пользовательская таблица с атрибутом admin, который используется для определения, является ли пользователь администратором, даже если этот атрибут не может быть установлен в описываемой вами форме, пользователь может создать сообщение для действия формы на странице с помощью&admin=true или &admin=1 в зависимости от типа данных соответствующего столбца.

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

Это делается с помощьюметод attr_accessible.

attr_accessor :x, :y, :admin
attr_accessible :x, :y

Это предотвратит обновление атрибута администратора с помощью вызова update_attributes, обычно используемого в действии редактирования.

Другая вещь, на которую следует обратить вниманиеэто автоматизированные регистрации.Для этого есть пара вещей, которые вы можете сделать.Наиболее распространенным является реализация капчи.Без этого кто-то мог бы написать скрипт, который создает 1_000_000 пользователей в вашей таблице, что очень затрудняет определение того, что является реальным, а какое - фальшивым.Вы также можете подумать о регистрации попыток регистрации по IP и ограничении количества запросов, например, в течение нескольких часов.

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

class UsersController < ApplicationController

  before_filter :protect, :only => [:edit]

  private

  def protect
    unless current_user
      redirect_to login_path
    end
  end

end

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

Если ваш сайт популярен, он будет атакован, точка.

Еще одна вещь, касающаяся капчи, я слышал, что НИЧЕГО, отображаемое на экране, можно отсканировать с помощью сценария, так как это безопасноможет показаться, что есть талантливые люди, которые могут танцевать вокруг вашей безопасности, такие как Макарена.

Будьте максимально активны и продумайте свои меры реагирования.

1 голос
/ 14 января 2012

Было бы сложно перечислить все, что вам нужно сделать здесь, чтобы защитить себя от какого-либо злонамеренного пользователя.

Возможно, вам следует просто прочитать Руководство по безопасности Ruby on Rails:

http://guides.rubyonrails.org/security.html

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