[Daily Contents] OWASP TOP 10, 시큐어 코딩 실습
Learning Goals
1. 시큐어코딩과 OWASP TOP 10의 의미를 알 수 있고 코드에 적용할 수 있다.
2. 해시 함수에 대해서 알 수 있다.
3. 실무에서 쓰이는 유용한 팁과, 하면 안 되는 보안 위배 코딩과 해결에 대해서 알 수 있다.
시큐어코딩? 상용화하려면 필수!
한국인터넷진흥원(KISA)에서 안전한 코드 인증
OWASP TOP 10
SQL Injection -> 외부에서 들어오는 값은 검증하고 활용
시큐어코딩
ID, PS를 4~12자, 대소문자 활용 이유
의도치 않은 공격을 방지하기 위해 긴 문자열 금지, 브루트포싱 무차별 데이터 공격을 방지하기 위해 짧은 문자열 금지.
제약사항은 FE, BE에서 전부 구현 -> FE는 사용자를, BE는 시스템을 위한 것.
Cryptography
암호화_복호화 가능
대칭키 암호화: AES, DES, ARIA, SEED...
비대칭키 암호화(공개키 암호화): RSA, ECC, EDCSA, DS(전자서명)
암호화_복호화 불가능(단방향 암호화)(해시 함수)
SHA256, keccak256, RIPEMD-160
복호화 불가능한 함수를 쓰는 이유: 검증
ex) 비밀번호 찾기의 경우 비밀번호를 새로 입력받는 경우
SECURE CODING
-
스트링 비교 시 string.equals(“”) 대신에 ““.equals(string) 사용 ex) request.getCheckType().equals(anObject: “business”)) -> “business”.equals(request.getCheckType()) -> Null Exception 방지
-
@RequestBody 바인딩 되는 부분을 JPA Entity 객체로 받으면 안 됨 ex) @RequestBody User request -> @RequestBody Map<String, Object> request String email = request.get(key: “email”).toString();
SUMMARY $ QUIZ
- OWASP TOP 10의 취약점 1위로서 시스템 DB에 쿼리문을 주입하는 방법으로 SQL Injection이라고 한다.
- 복호화 불가능(단방향) 암호화에 쓰이는 SHA256이나 keccak256를 해시함수라고 한다.
- 평문 문자열 값을 해시암호화한 값은 salt에 따라서 결과가 달라질 수도 있다. (X)
- 다음 중 변수 String 타입의 id 값이 null이어도 에러가 나지 않는 구문은? “TESTID”.equals(id)
- 동형암호는 4세대 암호라 부르며 데이터를 암호화한 채로 연산할 수 있는 암호화 기법으로서, 평문을 암호화한 것에 연산을 한 결과와, 평문에 연산을 하여 암호화한 것이 같은 것을 말한다. E(m1) + E(m2) = E(m1 + m2) E(m1) _ E(m2) = E(m1 _ m2)
Q. 아스키코드로 특수문자 넣을 수 있는지?
A. 넣을 수 있음.
Q. 현업에서의 방어 기법은?
A. 소나큐브 등 정적 분석 툴을 활용하여 일정 점수 이상을 받지 못하면 빌드 불가.
댓글남기기