Остановка обмена сессиями между злоумышленниками в Rails - PullRequest
4 голосов
/ 20 августа 2009

Как лучше всего запретить пользователям делиться сессионными cookie-файлами в Rails?

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

По сути, я хотел бы определить, пытается ли кто-то поделиться платным членством с другими. Пользователи уже проверяются в момент входа в систему для входа из слишком большого числа различных подсетей, но некоторые пытались обойти это, обмениваясь файлами cookie сеанса. Какой лучший способ сделать это, не привязывая сессии к IP-адресам (многие легитимные люди используют чередующиеся прокси).

Лучшая эвристика, которую я нашел, это количество подсетей / время класса B (некоторые провайдеры используют вращающиеся прокси в разных классах C). Это дало нам наименьшее количество ложных срабатываний, поэтому я бы хотел придерживаться этого метода.

Сейчас я думаю о применении фильтра before для каждого запроса, который отслеживает подсети и идентификаторы session_ids, которые пользователь использовал в memcached, и применяет к ним эвристику, чтобы определить, передается ли файл cookie.

Есть ли что-нибудь проще / легче реализовать идеи? Существующие плагины, которые делают это?

Ответы [ 2 ]

1 голос
/ 21 августа 2009

Вы можете привязать информацию сеанса к информации браузера. Если люди заходят из 3 или 4 разных типов браузеров в течение определенного периода времени, вы можете сделать вывод, что может происходить что-то подозрительное.

Альтернативный ответ опирается на немного социальной инженерии. Если у вас есть эвристика, которой вы доверяете, вы можете предупредить пользователей (вверху страницы), что вы подозреваете, что они используют свою учетную запись и что за ними внимательно следят. Ссылка «свяжитесь с нами» в предупреждении позволит законным пользователям объясниться (и, следовательно, будет постоянно удалена). Это может свести проблему к минимуму, чтобы снять ее с вашего радара.

1 голос
/ 21 августа 2009

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

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