티스토리 뷰
1. Command Injection
1.1. subprocess.call() function
- subprocess.call(), shell=True 인 경우에 해당
- shell=False 처리하고, 커멘드 라인 shlex.split() 처리
1.2. os.system() or os.popen*() function
- os.system(), os.popen*() 경우에 해당
- pipes.quote()를 사용하여, 변수(명령어 아규먼트), quote 처리한다.
2. Code Injection
2.1. exec() or eval() function
- 위험성이 많기 때문에 가능하면 사용하지 않는게 좋다.
- 사용해야 한다면, 받드시 들어올 수 있는 변수값을 체크 해야한다.
2.2. pickle or shelve module
- Celery, Django 낮은 버전에서 메시지 전송시, 세션저장시 각각 pickle을 사용하기 때문에 보안 처리 해야한다.
- 데이터 시리얼라이즈 시 json 또는 yaml(반드시 yaml.safe_load()를 사용)을 사용하도록 한다.
2.3. yaml
- yml 설정 파일 인젝션이 가능
- yaml.load() 대신, yaml.safe_load() 사용 해야한다.
3. SQL Injection
- 문제는 믿지 못할 변수 이기때문에, Django or sqlalchemy 같은 ORM을 사용하는 것을 추천한다.
4. Information Leakage
- print, logging 등을 사용할 때에는, 프로세스 및 로그 파일 등의 소유권 및 권한 설정을 한다.
5. Reference
'보안' 카테고리의 다른 글
보안 웹서버 외부 frame 서비스 차단(x-frame-options, clickjacking) (0) | 2017.05.12 |
---|
댓글
warpmemory
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
페이지
TAG
- Module
- 외부링크
- check
- limits
- client
- code
- apache
- monitoring
- File
- PowerShell
- deview
- Ansible
- 코드
- 이슈처리
- MariaDB
- httpd
- Web
- 예제
- Linux
- Python
- configuration
- command
- example
- 명령어
- RESTful
- engineering
- Windows
- mysql
- error
- 번역
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함