- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
",t};e.buildCustomizationMenuUi=t;function n(e){let t='
",t}function s(e){let n=e.filter.currentValue||e.filter.defaultValue,t='${e.filter.label}
`,e.filter.options.forEach(s=>{let o=s.id===n;t+=``}),t+="${e.filter.label}
`,t+=`ID: ruby-security/rails-send-file
Language: Ruby
Severity: Warning
Category: Security
This rule warns against sending files using user input directly without proper sanitization. When user input is incorporated into file paths without validation, it can lead to directory traversal attacks or unauthorized file access, potentially exposing sensitive data or compromising the system.
Ensuring that any user-supplied filename or path is sanitized or validated before being passed to methods like send_file
is crucial. This can be done by whitelisting allowed filenames, restricting input to a predefined set of values, or explicitly constructing file paths without directly interpolating user input.
To avoid triggering this rule, developers should avoid passing raw parameters from user input into file paths. Instead, use fixed paths or sanitize inputs like params['filename']
before usage, for example: send_file("#{Rails.root}/foo.bar")
or by validating that the filename exists within an expected directory. This reduces the risk of serving unintended files and enhances the security of file delivery in the application.
def download_image
path = "#{Rails.root}/#{params['filename']}"
send_file(path)
end
def download_image
send_file("#{Rails.root}/#{params['filename']}")
end
def download_image
path2 = "#{Rails.root}/#{params['filename']}"
path = "#{Rails.root}/foo.bar"
send_file(path)
end
def download_image
send_file("#{Rails.root}/public/images/image.jpg", type: "image/jpeg", disposition: "inline")
end