일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Python
- AI
- scss
- webpack
- nginx
- leetcode
- condition
- docker
- dotenv
- var
- JavaScript
- C#
- property
- C++
- npm
- machine learning
- generic
- 보안
- vue.js
- security
- BOJ
- bash
- 앙상블
- TypeScript
- vuetify
- git
- VUE
- type
- loop
- Clone
Archives
- Today
- Total
ice rabbit programming
[보안] 파일 업로드/다운로드 취약점 본문
파일을 HTTP로 주고받을 때에는 multipart/form-data의 폼으로 전송하게 되는데, request의 바디는 여러 파트로 나누어져 파라미터와 파일의 내용을 전달하게 된다. 아무래도 업로드가 파일이 서버에 저장되는 것이니 더 주의할 부분이 많다. 정보를 유출하거나 공격하는 파일을 만들어 외부에서 실행하는 것이 파일 업로드 시의 대표적인 공격이다.
파일 업로드 시 주의할 점
- 사이즈(개수/크기) 제한을 두어야 한다.
-> 사이즈 제한을 두지 않으면 대용량의 파일을 올려 DoS 공격을 취할 수 있다. - 타입 체크를 실시하여야 한다. 이에 더해 파일의 실행 권한을 부여하지 않는다.
-> 웹쉘을 올려 외부에서 실행하여 공격할 수 있다. - 외부에서 실행 뿐만 아니라 아예 접근이 불가능하도록, 외부에서 접근이 불가능한 경로에 저장한다.
- 업로드 파일명과 저장 파일명은 동일하게 저장한다.
-> 다만 실제 저장은 랜덤하게 하고, DB에 파일명을 저장한다.
파일 다운로드 시 주의할 점
- 컨트롤러를 구분하여 유효성 체크 후 접근해야 한다.
-> 파일명 경로를 조작하여 다른 파일에 접근할 수 있으므로 파일명 필터링과 권한 체크가 필수이다.
'Development > Secutiry' 카테고리의 다른 글
[보안] 접근제어 (0) | 2021.12.19 |
---|---|
[보안] 계정 및 인증 관리 (0) | 2021.10.05 |
[보안] 쿠키 및 세션 관리 (0) | 2021.03.24 |
[보안] XSS(사이트 간 스크립팅) (0) | 2020.05.01 |
[보안] 인젝션 (0) | 2020.04.19 |