Ruby On Rails - Что означают эти предупреждения о Тормозе?

Я использую brakemangem для сканирования моего приложения.

После сканирования приложения я получаю следующие предупреждения:

#Security warnings

Method                  | Warning Type    | Message                    
------------------------------------------------------
show                    | Unscoped Find   | Unscoped call to PatientMessage#find near line 27: Message.find(+params[:id]+)
------------------------------------------------------

#Controller warnings:

Controller            | Warning Type               | Message
----------------------------------------------------------------------------
ApplicationController | Cross-Site Request Forgery | 'protect_from_forgery' should be called in ApplicationController

Может кто-нибудь помочь понять, что означают эти предупреждения?

1 ответ

Решение

Ошибка protect_from_forgery в значительной степени говорит само за себя (это говорит о том, что вы должны включить метод, который помогает защитить ваш сайт от межсайтовых скриптов в вашем контроллере приложения), но документы для Unscoped Find находятся здесь: http://brakemanscanner.org/docs/warning_types/unscoped_find/

По сути, это говорит вам, что вы должны сделать что-то вроде:

current_user.messages.find(params[:id]) 

вместо Message.find, поэтому пользователи не могут просто найти какое-либо сообщение, передав идентификатор в params. В приведенном выше примере предполагается, что у вас есть помощник current_user и что сообщение принадлежит пользователю, что может быть не так в вашем приложении, но именно это означает предупреждение.

Другие вопросы по тегам