rails3, params [: id] шифрование - PullRequest
1 голос
/ 08 июля 2011

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

<% = link_to '+ New Event', {: controller => 'events',: action => 'new',: company_id => company.id}%>

В мире php, который я использовал для шифрования этого идентификатора ... как я могу сделать это на rails3 или есть лучший способ ??

Излишне говорить, что я новичок в рельсах и немного знаю php Любая помощь или предложения будут с благодарностью.

Ответы [ 2 ]

5 голосов
/ 29 января 2014

Даже если это старый вопрос, это очень стоящий вопрос. Абсолютно стоит скрыть идентификатор в URL, в частности, для предотвращения раскрытия информации.

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

Решение этой проблемы в рельсах оказывается довольно простым. На мой взгляд, лучше всего работает переопределение to_param в моделях, обычно через модуль в каталоге lib и before_filter в контроллере приложения, который расшифровывает идентификаторы.

Для прохождения, посмотрите на это: http://www.youtube.com/watch?v=UW_s9ejrCsI

2 голосов
/ 08 июля 2011

Вместо того, чтобы пытаться зашифровать или скрыть значение вашей company.id, спросите себя, что именно вы хотите запретить пользователям.

Если вы просто хотите запретить пользователям создавать события, связанные с не-экспонирующие компании (например, установив id на действительно высокое значение), тогда подойдет простая

validates_presence_of :company

для модели Event.

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

F

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