티스토리 뷰

리팩토링(Refactoring) 과 시큐어 코딩(Secure Coding)


리팩토링(Refactoring) 이란 

 

외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법이다. 이 과정은 코드를 쉽게 이해하고 유지보수를 좋게 하는 것에 초점이 맞춰져야 한다. 가깝게 볼 때 클린 코드와 리팩토링의 차이가 별로 없어 보이지만 클린코드는 단순하게 가독성을 높이기 위한 작업인 반면 리팩토링은 클린 코드를 포함하여 유지보수를 위한 코드의 개선이라고 볼 수 있다. 클린 코드와 같은 부분은 설계단계에서 잘 이루어져 있는 것이 중요하고, 리팩토링은 결과물이 나온 이후 수정이나 추가 작업이 진행될 때 개선해 나가는 단계이다. 

 


리팩토링(Refactoring) 목적

리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것이다. 리팩토링은 성능을 최적화시키는 것이 아니며 코드를 신속하게 개발할 수 있게 만들어주고, 코드 품질을 좋게 만들어주는 것을 의미한다. 코드가 이해하기 쉽고, 수정하기 쉽다면 개발 속도가 증가할 것이다.


리팩토링(Refactoring) 이 필요한 시점

 

1. 삼진 규칙(3번의 중복/3번의 같은 행위를 하는 경우)
2.  기능을 추가하는 경우
3. 버그를 수정해야 하는 경우
4. 코드 검토(Code Review) 하는 경우


리팩토링(Refactoring)의 절차

 

 

소규모 변경 후 동작여부를 테스트하게 되며 작동할 경우 다음단계로 넘어가며 그렇지 않는 경우 undo 후 리팩토링 하게 된다. 


시큐어 코딩(Secure Coding) 이란

시큐어 코딩은 해킹 등 사이버 공격의 원인인 보안 취약점을 제거하여 안전한 소프트웨어를 개발하는 SW 개발 기법이다. 개발자의 실수나 논리적 오류로 인해 발생할 수 있는 문제점을 사전에 차단하여 대응하고자 하는 것이다. 정보보호가 SW 개발의 중요한 주제로 떠오르는 지금 시큐어 코딩은 필수적인 절차이다.

 


시큐어 코딩(Secure Coding) 가이드

1. 입력데이터 검증 및 표현

 

입력데이터 검증 및 표현이란 폼 양식의 입력란에 입력되는 데이터로 인해 발생하는 문제를 예방하기 위하여 점검하는 보안 항목을 의미한다. 즉 사용자가 비정상적인 데이터를 입력하여 시스템에 손상을 주거나 정보를 수정 및 탈취하지 못하도록 방지하는것을 의미한다.  이는 주로 SQL 인젝션 공격을 막기 위한 코딩을 의미한다.

 

✔ Bad Case

안전하지 않은 코드의 예로, 외부에서 받는 데이터인 'gubun'의 값을 검증 없이 사용하고 있다. 이 경우 gubun의 값으로 a' or 1=1 이 들어간다면 board 테이블의 전체 데이터가 조회된다.

 

✔ Good Case

 

안전한 코드의 예로, 파라미터를 받는 PreparedStatement 객체를 상수 스트링으로 생성하고 파라미터 부분을 setString 등의 메소드로 설정해야 한다.

 

2. 에러 처리

에러 처리는 에러를 처리하는 방식이 부적절하거나 누락되어 발생하는 보안 항목을 의미한다. 종종 개발자가 디버깅의 편의성을 위하여 에러메세지를 화면에 노출하는 경우가 있는데 이러한 경우 에러 메세지는 시스템과 관련된 중복 정보를 포함하는 경우가 많아 공격자의 악성 행위를 도울 수 있다. 따라서 에러 처리는 가능한 최소한의 정보만을 담고 있어야 한다.

 

✔ Bad Case

 

 

✔ Good Case

 

 


Reference

* 시큐어 코딩 예시  참고

 

 

人Co BLOG :: 정보보안은 개발단계에서부터! 시큐어코딩(Secure Coding)

최근 미국의 전기차 기업 테슬라에서 사내 CCTV가 해킹당해 회사 내부의 모습이 노출되는 사건이 있었습니다. 또 송유관 운영회사 콜로니얼 파이프라인이 랜섬웨어 공격을 받아 시스템이 마비되

www.insilicogen.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함