IT/앱사용방법

파이썬, 개발) 하드코딩 된 정보 안전하게 변환하기

볼통통알파카 2022. 9. 9. 12:43
반응형

하드코딩을 하는 이유

가끔씩 개발 테스트할 때 시스템이 연동되고 있는지 확인하거나 연동 후 결괏값이 잘 반영되었는지 확인하기 위해 하드코딩을 하는 경우가 있다.

또는 내부 시스템이 고정 코드값을 갖고 있어야 연결되는 경우 하드코딩을 하는 경우가 있다.

이런 이유로 하드코딩을 하고 있지만 노출될 때 피해는 무척 크다.

하드코딩 적용했을 때 보안 방안

DB서버 연동을 하기 위해서 어쩔 수 없이 IP와 같은 정보를 입력하는 경우에 대한 보안조치가 있다.

안전한 암호화 방식으로 변환 후 별도 분리 공간(파일)에 저장하고 복호화하는 방법이다.

파이썬 코딩 예시

import pymysql
import json
def query_execute(query, config_path):
    
    with open(config_path, 'r') as config:
       # 설정파일에서 user, passwd 사용
       dbconf = json.load(fp=config)
       
       # 암호화되어 있는 블록암호화 키를 복호화 해서 가져오는 함수
       blockKey = get_decrypt_key('blockKey')
       # 설정파일에 암호화되어 있는 값을 가져와 복호화한 후 사용
       dbUser = decrypt(blockKey, dbconf['user'])     
       dbPasswd = decrypt(blockKey, dbconf['passwd'])
  
       dbconn = pymysql.connect(host=dbconf['host'], port=dbconf['port'], user=dbUser, passwd=dbPasswd,    db=dbconf['db_name'], charset='utf8')
       curs = dbconn.cursor()
       curs.execute(query)
       dbconn.commit()
       dbconn.close()
정리

1. 하드코딩 데이터는 별도 방식으로 암호화하여 저장

2. 암호화된 정보를 호출하여 복호화함

3. 복호화 후 바인딩하여 접근권한 체크

반응형