11/3 - 시큐어 코딩
파이썬 복습
"""
안녕하세요
""" >>> 변수가 있는 경우 값이 됨.
range()
- list(range(4))
call by reference: 주소 참조, 위치기반 파라미터, 만약 키워드로 할 시 순서 고려
리스트
empty = []
nums = [10,20,30,40,5]
a= list()
item
- spam.insert([0],dog)
spam.remove
튜플
- 불변 자료형
- 읽기만 사용
- 적은 메모리
eggs = ('hello', 42, 0.5)
colors = 'red','green','blue'
자바는 call by value?
딕셔너리
ham = {'species': 'cat','name':'zophie','age':'0'}
enumerate
- index, value의 튜플을 반환함
CGI
- common gateway interface
WSGI
- web server gateway interface
- 파이썬에서 사용되는 개념
asgi
- wsgi의 비동기 요청 처리 단점 보완
- 비동기: 채팅방식
- 요샌 다 비동기
django
app1 >>views >> setting >>
현재 url 방식: url 라우트 >> 매핑으로 로직이 보여지지 않게
ex) get_info_socket/ >> get_inf_socket_X
새로운 html
- 탬플릿에 index.html을 만든다고 가정
시큐어 코딩

인증없는 중요 기능 허용
중요 자원에 대한 잘못된 권한 설정
- os.fchmod, os chmod 등 함수 사용으로 권한 설정할 수 있음
>> 사용자에 의해서만 읽고 쓰기가 가능하도록 설정
- 777 (모든 권한 허용으로 문제가 됨)
- 700 (좋음)
취약한 암호화 알고리즘 사용
- 취약 : base64, sha128 - 공격자 무력화
- 권장: 암호알고리즘 검증 기준 참고
- DES (x) AES(o)로
암호화되지 않은 중요정보
- 평문저장 x
- SSL또는 HTTPS등 보안채널 사용 (필수)
평문으로 인코딩 >> AES사용해서, 여러 알고리즘을 합쳐서 인코딩
하드코드 중요정보
- 코드에서는 키에 대한 정보가 있어선 안됨. >> 암호화 키 API 사용해야함
- 패스워드는 별도의 파일에 저장하여 사용
개발에 대한 정보만으로 개발해야 함. : (json파일에 실제 정보 저장 )

충분하지 않은 키 길이 사용
- rsa(1024) >> rsa(2048)
적절하지 않은 난수 값 사용
- random모듈을 보안 목적으로 사용하면 안됨.
- secrets모듈 사용해야 함.
취약한 패스워드 허용
- 정규식 사용 권장
부적절한 전자서명 확인
- 전자서명을 확인하는 로직이 필요
부적절한 인증서 유효성 검증
- 스푸핑, 스니핑의 위험
- 인증서가 유효하지 않거나 악성
>> 전달한 인증서가 유효한지 검증한 후 데이터 송수신
*CA인증서, 키 - pem 파일
쿠키를 통한 정보노출
- 하드디스크에 쿠키 저장
- 쿠키 안에 인증정보가 저장되면 문제가 될 수 있음
>> 쿠키 만료시간을 설정
(60*60*24*365) - 365일 과도한 설정은 X
중요정보를 주석문안에 포함
- 주석 삭제
솔트 없이 일방향 해시함수 사용
- rainbowtable attack 을 이용해서 해시값을 알아낼 수 있음
>>일방향 해시함수를 이용하여 저장
>>솔트값사용
*쏠트: 단방향 함수의 랜덤 값
무결성 검사 없는 코드 다운로드
- DNS스푸핑 위협
>> 해시 값 검사, 신뢰 사이트 : md5free
ex) 파이썬 설치 파일 >> md5 값 넣음 >> matched!
MD5로 다운로드한 파일의 무결성을 확인하는 방법
인터넷에서 파일을 다운로드하다 보면 종종 MD5라는 이름으로 영문과 숫자가 혼합된 문자열이나 이런 문자열이 포함된 파일을 볼 수 있습니다. 파일을 다운로드하는데 같이 있는데 어디에 쓰는
iteastory.com
반복된 인증 시도 제한 기능 부재
- brute force 위협
>> 최대 3회, 5회 / captcha나 two-factor