수업

11/3 - 시큐어 코딩

진태현 2023. 11. 3. 08:51

파이썬 복습

 

 

"""

 안녕하세요 

"""                 >>> 변수가 있는 경우 값이 됨. 

 

 

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을 만든다고 가정

index.html


시큐어 코딩

인증없는 중요 기능 허용

 

 

중요 자원에 대한 잘못된 권한 설정 

- os.fchmod, os chmod 등 함수 사용으로 권한 설정할 수 있음 

>> 사용자에 의해서만 읽고 쓰기가 가능하도록 설정 

- 777 (모든 권한 허용으로 문제가 됨) 

- 700 (좋음) 

 

취약한 암호화 알고리즘 사용

- 취약 : base64, sha128 - 공격자 무력화 

- 권장: 암호알고리즘 검증 기준 참고 

- DES (x) AES(o)로  

sha256

 

md5

 

암호화되지 않은 중요정보

- 평문저장 x

- SSL또는 HTTPS등 보안채널 사용 (필수) 

평문으로 인코딩 >> AES사용해서, 여러 알고리즘을 합쳐서 인코딩 

 

하드코드 중요정보 

- 코드에서는 키에 대한 정보가 있어선 안됨. >> 암호화 키 API 사용해야함 

- 패스워드는 별도의 파일에 저장하여 사용 

 

개발에 대한 정보만으로 개발해야 함. :  (json파일에 실제 정보 저장 )

 

 

충분하지 않은 키 길이 사용

- rsa(1024) >> rsa(2048)

 

적절하지 않은 난수 값 사용

- random모듈을 보안 목적으로 사용하면 안됨.

- secrets모듈 사용해야 함. 

 

random, secrets 생성된 값

 

취약한 패스워드 허용 

- 정규식 사용 권장 

 

 

부적절한 전자서명 확인 

- 전자서명을 확인하는 로직이 필요 

 

부적절한 인증서 유효성 검증

- 스푸핑, 스니핑의 위험 

- 인증서가 유효하지 않거나 악성

>> 전달한 인증서가 유효한지 검증한 후 데이터 송수신 

 

*CA인증서, 키  - pem 파일 

 

 

쿠키를 통한 정보노출

- 하드디스크에 쿠키 저장 

- 쿠키 안에 인증정보가 저장되면 문제가 될 수 있음 

>> 쿠키 만료시간을 설정 

(60*60*24*365) - 365일 과도한 설정은 X

 

 

중요정보를 주석문안에 포함

- 주석 삭제 

 

솔트 없이 일방향 해시함수 사용

- rainbowtable attack 을 이용해서 해시값을 알아낼 수 있음 

>>일방향 해시함수를 이용하여 저장

>>솔트값사용 

*쏠트: 단방향 함수의 랜덤 값 

무결성 검사 없는 코드 다운로드 

- DNS스푸핑 위협 

>> 해시 값 검사, 신뢰 사이트 : md5free 

 ex) 파이썬 설치 파일 >> md5 값 넣음 >> matched! 

 

https://iteastory.com/272

 

MD5로 다운로드한 파일의 무결성을 확인하는 방법

인터넷에서 파일을 다운로드하다 보면 종종 MD5라는 이름으로 영문과 숫자가 혼합된 문자열이나 이런 문자열이 포함된 파일을 볼 수 있습니다. 파일을 다운로드하는데 같이 있는데 어디에 쓰는

iteastory.com

 

 

반복된 인증 시도 제한 기능 부재 

- brute force 위협 

>> 최대 3회, 5회 / captcha나 two-factor 

 

5회 실패 에러