반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 보안 기능 - 중요정보 평문 저장
가. 개요
많은 응용프로그램은 메모리나 디스크에서 중요한 데이터(개인정보, 인증정보, 금융정보)를 처리한다. 이러한 중요 데이터가 제대로 보호되지 않을 경우, 보안이나 데이터의 무결성을 잃을 수 있다. 특히 프로그램이 개인정보, 인증정보 등의 사용자 중요정보 및 시스템 중요정보를 처리하는 과정에서 이를 평문으로 저장할 경우 공격자에게 민감한 정보가 노출될 수 있다.
나. 보안대책
개인정보(주민등록번호, 여권번호 등), 금융정보(카드번호, 계좌번호 등), 패스워드 등 중요정보를 저장할 때는 반드시 암호화하여 저장해야 하며, 중요정보를 읽거나 쓸 경우에 권한 인증 등을 통해 적합한 사용자가 중요정보에 접근하도록 해야 한다.
다. 코드 예제
JAVA
더보기
아래 예제는 인증을 통과한 사용자의 패스워드 정보가 평문으로 DB에 저장된다.
다음 예제는 패스워드 등 중요 데이터를 해쉬값으로 변환하여 저장하고 있다.
C#
더보기
다음은 사용자의 패스워드를 평문으로 저장해 놓고 출력하는 C# 코드의 예제이다.
패스워드는 암호화하여 저장해야 하며, 출력하지 않도록 한다.
참고자료
- CWE-312, Cleartext Storage of Sensitive Information, MITRE,
http://cwe.mitre.org/data/definitions/312.html - Clear sensitive information stored in reusable resources, CERT,
http://www.securecoding.cert.org/confluence/display/c/MEM03-C.+Clear+sensitive+information+stored+in+reusable+resources - Be careful while handling sensitive data, such as passwords, in program code, CERT, http://www.securecoding.cert.org/confluence/display/c/MSC18-C.+Be+careful+while+handling+sensitive+data%2C+such+as+passwords%2C+in+program+code
- Never hard code sensitive information, CERT,
http://www.securecoding.cert.org/confluence/display/java/MSC03-J.+Never+hard+code+sensitive+information - Do not store unencrypted sensitive information on the client side, CERT,
http://www.securecoding.cert.org/confluence/display/java/FIO52-J.+Do+not+store+unencrypted+sensitive+information+on+the+client+side - Password Plaintext Storage, OWASP
https://www.owasp.org/index.php/Password_Plaintext_Storage
반응형
'공부 > KISA' 카테고리의 다른 글
하드코드된 비밀번호 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.21 |
---|---|
중요정보 평문전송 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.21 |
취약한 암호화 알고리즘 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
중요한 자원에 대한 잘못된 권한 설정 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
부적절한 인가 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
댓글