2016-08-29 4 views
0

Brakeman으로부터 경고 메시지가 표시됩니다. 그들은 사용자가 제공 한 값에 의존하는 리디렉션을 사용하여 웹 사이트를 "속이거나"무해한 URL의 악성 링크를 숨길 수 있습니다. 또한 대상의 유효성이 확인되지 않은 경우 사이트의 제한된 영역에 대한 액세스를 허용 할 수도 있습니다. 내 컨트롤러에서Brakeman의 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

내가 (아마존 S3에 저장된 파일 및 종이 클립에 내 데이터베이스 덕분에 URL) 파일의 URL을 소요하고 URL을 생성하는 방법 download을 만들어 (즉. document_url) 지속될 것 내가 성공하지 않고 통과 동수의 검증을 시도하고있다 .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 

3 초 (사용자가 다운로드 할 수) 감사합니다. 위에서 볼 수 있듯이 내 도메인이 URL에 있는지 확인하려고했지만 Brakeman에 대한 보고서는 변경되지 않았습니다.

어떻게 진행할 수 있습니까?

답변

0

나는 비슷한 문제가 있습니다. 나는 아래의 강력한 매개 변수를 사용하여 경고를 통과 시켰는데 왜 작동하는지 잘 모르겠습니다.

redirect_to referer_param 

def referer_param 
    params.require(:referer) 
end