반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

오늘부터 공부한다

시큐어 코딩(Secure Coding) 본문

소프트웨어 공학

시큐어 코딩(Secure Coding)

1000hg 2019. 10. 16. 19:52
반응형

시큐어 코딩이란, 말 그대로 보안 코딩이다.

 

더 자세하게 설명하자면, 개발 단계에서 해킹과 같은 공격을 유발할 수 있는 취약점을 사전에 제거하고,

외부로부터의 공격에 안전하게 소프트웨어를 개발하는 방법이다.

 

시큐어 코딩은 수정이 손쉽고, 비용 효율성이 낮기 때문에 개발 초기 단계에서 시행한다.

 

※ 소프트웨어 업체는 SQL injection, XSS(Cross Site Scripting) 등 47개의 보안 취약점을 제거해야 함

 

시큐어 코딩을 위한 보안 방법론

 

1. 분석 단계

 

  • 요구사항 중 보안 항목을 식별
  • 보안 설계 검토 및 보안 설계서 작성
  • 보안 통제 수립

 

2. 설계 단계

 

  • 위험원 도출을 위한 위협 모델링
  • 보안 설계 검토 및 보안 설계서 작성
  • 보안 통제 수립

3. 구현

 

  • 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수해서 개발
  • 소스코드 보안 약점 진단 및 개선

4. 테스트

 

모의 침투 테스트, 동적분석을 위한 보안 취약점 진단 및 개선

 

5. 유지 보수

지속적인 개선(패치)

 

 

 

시큐어 코딩의 예시

대중적인 취약점인 SQL injection을 바탕으로 작성한다.

 

1) 개념

 

injection은 웹 애플리케이션에 대한 입력값 검증을 하지 않은 경우,

공격자가 입력 폼 및 파라미터를 조작하여 정보를 열람하거나 데이터를 조작하는 해킹기술이다.

 

DB에서 전달되는 SQL Query를 변경시키기 위해 웹 애플리케이션에서 입력 받은 파라미터를 변조하여 삽입함으로써

비정상적인 데이터베이스 접근을 시도하거나 재구성하여 원하는 정보를 열람하는 해킹 기술

 

 

2) 특징

 

- DB에 악성 코드를 대량 삽입

- Post나 HTTP header를 이용한 경우는 로그를 찾기 어려움

- 해킹 기법이 간단, 누구나 사용 가능

- 해킹 기법에 비해 효과가 매우 높고 위협적이다.

 

3) SQL injection에 걸리기쉬운 코딩

 

request 값을 검증 없이 바로 파라미터로 받을 때 injection이 발생한다.

이를 해결하기 위해서는 PreparedStatement를 이용하여 예방하도록 한다.

또는 inejction을 유발할 수 있는 따옴표나 세미콜론 등, SQL에 자주 사용되는 것들을

들어올 수 없게 해야한다.

 

4) 기타 SQL injection 방지 노력

 

-불필요한 권한을 삭제, DROP TABLE 같은 공격을 미연에 방지

- Mubatis framework와 같은 framework 사용시 별도의 보안 코딩 기법 사용

- 웹 페이지에 직접 SQL injection 공격을 시도하여 확인

- 코드에서 replace를 사용할 경우, 자바스크립트외에도 back-end쪽에서도 처리한다.

 

반응형

'소프트웨어 공학' 카테고리의 다른 글

빅데이터(Big Data)  (0) 2019.10.17
결합도(Coupling)과 응집도(Cohesion)  (0) 2019.10.17
QA와 QC  (0) 2019.10.16
디자인 패턴  (0) 2019.10.15
(OS)교착상태 (Deadlock)  (0) 2019.10.15