2015-08-19 2 views
1

Я использую brakemangem для сканирования своего приложения.Ruby On Rails - Что означают эти предупреждения Brakeman?

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

#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 

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

ответ

3

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

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

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

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

+0

Следуя документации, я добавил следующий код: 'protect_from_forgery: with =>: exception' для решения' 'protect_from_forgery 'должен вызываться в объявлении ApplicationController'. Но это нарушило мою службу проверки подлинности. –