Googlebot вызывает недопустимый запрос перекрестного происхождения (COR) на Rails 4.1
Как предотвратить появление этой ошибки в Google во время обхода сайта? Я не заинтересован в отключении "protect_from_forgery", если это не безопасно.
[fyi] method=GET path=/users format=*/* controller=users action=show status=200 duration=690.32 view=428.25 db=253.06 time= host= user= user_agent=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) session= params={""} ()
[hmm] Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding. (pid:)
[fyi] method=GET path=/users/123/flag format=*/* controller=users action=flag status=500 error='ActionController::InvalidCrossOriginRequest:Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.' duration=26.50 time= host= user= user_agent= session= params= (pid)
[omg] ActionController::InvalidCrossOriginRequest (Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.):
actionpack (4.1.4) lib/action_controller/metal/request_forgery_protection.rb:217:in `verify_same_origin_request'
Контроллер отвечает этим
respond_to do |format|
format.js { render template: 'users/flag', layout: "some_layout" }
end
Я не могу воссоздать ошибку, и она, кажется, работает нормально, когда я делаю это через мой браузер
До сих пор я рассматривал следующие ресурсы, но большинство из них, по-видимому, предполагают просто слепое обращение CSRF или остаются без ответа.
Использование макета специфический javascript в comfy приводит к InvalidCrossOriginRequest
недопустимый запрос перекрестного происхождения после обновления до Rails 4.1
Как избежать исключения ActionController:: InvalidCrossOriginRequest?
Googlebot запрашивает png, а затем весь мой сайт Heroku вылетает. Что происходит дальше?
https://github.com/rails/rails/pull/13345
http://myownpirateradio.com/tag/rails-authentication-token/
https://gist.github.com/aishek/8535082
Почему Google добавляет while (1); к их JSON ответы?
http://www.tsheffler.com/blog/?p=428- http://edgeapi.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html
Для уточнения:
Действие должно быть защищено от CSRF, но я хочу, чтобы Google не сканировал его или не создавал ошибку при обходе страницы. То есть.) Я хочу, чтобы ложноположительные предупреждения безопасности исчезли, не ставя под угрозу мои функции безопасности.
2 ответов:
Googlebot использует формат "*/*" (http://apidock.com/rails/Mime ) и приложение отображает js, так как это единственная доступная вещь. Поскольку он удален, он правильно вызывает недопустимый COR.
Это можно было воспроизвести, используя:
curl -H "Content-Type: */*" https://www.example.com/users/123/flagИсправление состоит в том, чтобы иметь резервный ресурс html для обхода паука:
respond_to do |format| format.html { render template: 'users/flag' } format.js { render template: 'users/flag', layout: "some_layout" } end
Согласно "защите CSRF от дистанционных меток" от направляющего выступа рельсов:
В случае тестов, где вы также делаете клиент, измените от:
Get: index, format:: js
Кому:
Xhr: get,: index, format:: js
В случае, если вы хотите, чтобы этот маршрут пропустил проверку csrf, белый список маршрута с использованием что-то вроде:
protect_from_forgery :except => :create
Comments