2016-08-29 3 views
0

Я получаю это предупреждение от Brakeman. Как говорится, перенаправления, которые полагаются на предоставленные пользователем значения, могут использоваться для «обманывания» веб-сайтов или скрытия вредоносных ссылок в других безопасных URL-адресах. Они также могут разрешать доступ к запрещенным областям сайта, если адресат не проверен.Brakeman unprotected redirect for Rails, S3, Paperclip

| Confidence | Class | Method | Warning Type | Message | High | DocumentsController | download | Redirect | Possible unprotected redirect near line 46: redirect_to(+Document.find(params[:id]).f

В моем контроллере я создал метод download, который принимает файл URL (файл хранится на Amazon S3 и URL в моей базе данных, благодаря Скрепке) и создает URL (то есть. document_url), который будет длиться 3 секунды (для пользователя, чтобы скачать) благодаря .expiring_url(3)

def download 
    @document = Document.find(params[:id]) 
    document_url = @document.file.expiring_url(3) 
    if URI.parse(document_url).host.include? "domain.com" 
    redirect_to document_url, only_path: true 
    else 
    document_url = nil 
    end 
end 

Я пытался пройти проверку кондуктор без успеха. Как вы можете видеть выше, я попытался проверить, присутствует ли мой домен в URL-адресе, но он не изменил отчет о Brakeman.

Любая идея, как действовать?

ответ

0

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

redirect_to referer_param 

def referer_param 
    params.require(:referer) 
end 
Смежные вопросы