티스토리 뷰
리팩토링(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
* 시큐어 코딩 예시 참고
'Study > CS' 카테고리의 다른 글
[Software Engineering] 데브옵스(DevOps) (0) | 2022.09.09 |
---|---|
[자료구조] 힙(Heap) (0) | 2022.09.04 |
[Software Engineering] 클린 코드(Clean Code) (2) | 2022.09.04 |
[알고리즘] DFS/BFS (0) | 2022.08.28 |
[알고리즘] 최소 공통 조상(Lowest Common Ancestor, LCA) (0) | 2022.08.27 |
- Total
- Today
- Yesterday
- 리스트2
- 보험
- 운영체제
- 프로세스 주소공간
- CS.
- CS 스터디
- 정렬
- 이진탐색
- CS
- 리스트함축
- 자바
- 알고리즘
- https
- 네트워크
- 데이터베이스
- 자료구조
- It
- 리스트
- Greedy sort
- 자료구조와알고리즘 23강
- 완전탐색
- 스터디
- SW
- 프로그래머스강의
- 리스트 복사
- 코드업 기초
- 이차 리스트
- 파이썬
- 연결리스트활용
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |