Работать с токеном подлинности? Или отключить это? - PullRequest
1 голос
/ 27 сентября 2011

Мое мини-веб-устройство отправит образцы данных в приложение RoR, которое добавит их в таблицу MySQL.

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

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

Это не очень чувствительное к безопасности приложение, поэтому я должен просто сказать этой странице полностью игнорировать маркер подлинности?

Надеемся, что он будет аутентифицирован тем, что каждый клиент (веб-устройство) входит в систему с уникальным идентификатором пользователя и паролем, поэтому он будет защищен идентификатором сеанса.

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

Keb'm

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

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

skip_before_filter :verify_authenticity_token, :only => :create
0 голосов
/ 11 июня 2014

Если аутентифицируется каждый клиент, тогда можно отключить токен аутентификации

Это верно только в том случае, если вы используете другой механизм аутентификации, чем файлы cookie http.Поскольку вы упомянули 'session_id', я предполагаю, что это не так.

При использовании стандартного cookie-файла rails session_id, user_id, хранящегося в сеансе, и этого действия, доступного для веб-обозревателя, он будет подверженCSRF атаки.

Лучшей стратегией для API является реализация специального механизма аутентификации, своего рода токена аутентификации, который отправляется с каждым заголовком http.

Затем либо измените защиту csrf на null_session, либо, если выless paranoid полностью отключите защиту csrf для вашего запроса API, как описано здесь

Если вы все еще хотите придерживаться аутентификации на основе cookie для вашего API, вам следует установить токен аутентификации csrf с первым GETзапрос в дополнительный файл cookie.Затем вы читаете этот файл cookie и отправляете его токен в виде заголовка «X-CSRF-Token».Rails проверит наличие этого заголовка в методе protect_from_forgery, и, поскольку файлы cookie не могут быть прочитаны третьими сторонами, злоумышленник не сможет подделать этот запрос.

#application_controller.rb
protect_from_forgery with: :exception
after_action :set_csrf

def set_csrf
 cookies['X-CSRF-Token'] = form_authenticity_token if protect_against_forgery?
end

# request session and x-csrf-toke
# the cookies will be stored into cookie.txt
curl -c cookie.txt http://example.com

#curl post command
curl -H "X-CSRF-Token: <token>" -b cookie.txt -d '{"item":{"title":"test"}}' "http://example.com/items.json"

См. : Verified_request? метод, чтобы увидеть, как рельсы проверяют подделку запроса.

...