반응형
트라이-익셉트(try - except)문 사용 시 주의
파이썬에서 트라이(try)문을 사용할 때, 예외처리를 하지 않을 경우 또는 예외처리를 세부적으로 적용하지 않을 경우 오류를 활용해 공격자가 시스템을 공격할 수 있다.
보통 개발할 때 try 블록에서 오류를 캐치하고 예외조치를 제대로 설정하지 않는 경우가 있는데 그래서 try문을 사용할 땐 항상 예외 처리를 설정하고, 프로그램이 제어되지 않는 방식으로 중지되도록 설정해야 한다.
트라이문 활용 코드예시
import os
import binascii
import base64
from Crypto.Cipher import AES
static_keys=[
{'key' : b'\xb9J\xfd\xa9\xd2\xefD\x0b\x7f\xb2\xbcy\x9c\xf7\x9c',
'iv' : b'\xf1BZ\x06\x03TP\xd1\x8a\xad"\xdc\xc3\x08\x88\xda'},
{'key' : b'Z\x01$.:\xd4u3~\xb6TS(\x08\xcc\xfc',
'iv' : b'\xa1a=:\xba\xfczv]\xca\x83\x9485\x14\x17'},]
def encryption(key_id, plain_text):
static_key = {'key':b'0000000000000000', 'iv':b'0000000000000000'}
try:
static_key = static_keys[key_id]
except IndexError:
# key 선택 중 오류 발생 시 랜덤으로 암호화 키를 생성하도록 설정
static_key = {'key': secrets.token_bytes(16), 'iv': secrets.token_bytes(16)}
static_keys.append(static_key)
cipher_aes = AES.new(static_key['key'],AES.MODE_CBC,static_key['iv'])
encrypted_data = base64.b64encode(cipher_aes.encrypt(plain_text))
return encrypted_data.decode('ASCII')
익셉트 부분에 해당 키를 설정하지 않고 pass를 하게되면 0000~으로 암호화가 수행되는 상황이 발생된다.
만일 다양한 예외상황이 발생할 수 있는 경우에는 1:1로 예외처리를 하는게 좋다.
반응형
'IT' 카테고리의 다른 글
pc 부팅 반복되는 문제 진단 및 해결 방법 (0) | 2022.10.26 |
---|---|
프린터 출력 오류 원인과 해결 방법 공개 (0) | 2022.09.29 |
python(파이썬) 비밀번호 검사 정규식 (0) | 2022.09.26 |
보안 패치 끝난 윈도우7을 사용할 때 보안성 확보하는 방법 (0) | 2022.05.13 |
국가, 공공기관 정보화사업 제안요청서 작성 방법(보안항목 개념설명) (0) | 2022.05.03 |