개인적으로 개발을 하면서 좋은 코드를 작성하는 법을 고민하며, 작성한 글입니다. 


1. 읽기 좋은 소스를 만들자.

 - 혼자 개발하는 프로젝트가 아닌 이상, 다른 사람이 내 코드를 보고 빠르게 이해할 수 있어야 한다.

 - var str_1 = 'TEST_STRING_1'; var str_2 = 'TEST_STRING_2'; 정말... 최악이다.


2. 불필요한 전역변수 사용

 - 특정 메소드에서만 사용하는 변수를 전역변수로 선언해 놓을 경우 소스 상단이 굉장히 지저분해 질 수 있다. 


3. 적당한 주석

 - 주석 없이 작성된 코드를 한번에 이해할 수 있으면, 그 코드는 굉장히 잘 작성된 코드일 것이다. 

 - 허나 실제로는 그렇게 하기 힘들다. 그러니 코드를 읽는데 최대한 방해되지 않게 해야 한다고 본다. 

 - 주석보다는 명확한 변수명 또는 메소드명을 작성하여 개발 하는 걸 추천한다. 

 - 추가적으로 업무 중에는 여러 이슈들에 의해서 예외처리, 하드코딩 등이 들어갈 수 있다. 그럼 어떤 이슈 때문에 작성된 코드고, 이슈 관리를 한다면 이슈 번호를 추가하여 다른 담당자가 해당 이슈를 찾기 쉽게 작성해 놓으면 업무하는데 있어서 굉장히 편하다.


4. 코드 컨벤션

 - 여럿이 여러 컨벤션을 사용하여 하나의 프로젝트를 진행한다면 최악의 사태가 발생할 수 있다. 

 - A라는 개발자는 helloWorld 라고 변수를 만들고, B라는 개발자는 hello_world 로 만들어 사용한다면, 같은 목적을 가진 변수가 두개 존재하게 되고, 재활용을 못하게 된다.

 - 프로젝트를 진행하기전 camelCase( 각 단어의 첫 글자는 대문자를 사용(첫 단어는 소문자 사용)), underscores(각 단어를 밑줄로 구분한다) 등의 표기법을 잡고 시작하는걸 추천한다.

 - 또 formatter를 하나 만들어 공통된 코드 포멧을 사용할 수 있도록 하면 더더욱 좋다.


5. 리팩토링

 - 아 다음에 리팩토링해야지... 하는 생각은 버려라!

 - 조금씩이라도 꾸준히 리팩토링 해야한다.

 - 미사용 소스는 과감하게 삭제하고, 중복코드 또한 정리하는 걸 추천한다.

 - 추가 스팩이 발생하더라도 소스가 깔끔하게 정리되어 있다면 부담없이 추가 할 수 있을 것이다.


6. 코드리뷰

 - 혼자 작성한 코드보다는 여럿의 의견을 듣고 수정하는 코드가 더 좋을 수 밖에 없다.

 - 단, 코드리뷰시에 "비난"보다는 의견을 나누는 형태여야, 코드리뷰에 대한 스트레스가 없을 것이다.


7. 잘된 소스 보기

 - Spring 프로젝트 소스, Apache 프로젝트 소스 등을 틈틈히 읽어보다.

 - 아! 이렇게도 소스를 만들 수 있구나 싶은 부분들이 굉장히 많다.

 - 그러다보면 디자인 패턴은 기본적으로 배울 수 있게 되고, 여러 부분에서 도움이 많이 될 것이다.


 

좋은 코드 작성하는것에 대한 정답은 없는 것 같다. 단지 개발을 하면서 느낀 부분을 짧게 정리해 봤다.

'프로그래밍 > 일반' 카테고리의 다른 글

좋은 코드 작성하기.  (0) 2018.05.01
HSTS(HTTP Strict Transport Security) 개념과 설정  (0) 2018.03.08

1. HSTS란?

 - HTTPS를 강제하는 사이트의 경우 HTTP로 접근할 때, 302 Redirect 하는 경우가 많다. 이렇게 될 경우 취약점이 발생한다. (SSL Strip Attack : 하단참고)

 - 유저(브라우저)에게 HTTPS 요청만 허용함을 알려주는 것을 HSTS라고 함.(응답 Header에 추가함.)

 - HSTS는 서버 응답 Header를 통해 등록이 이루어질수도 있지만, Google, Paypal, Twitter의 경우는 크롬 브라우저에 HSTS가 Preload 되도록 강제화 되어있음.

https://www.chromium.org/hsts


* HTTPS로 강제 Redirect 하는 법(Nginx)

return 301 https://$host$request_uri;


* SSL Strip Attack이란?

 - SSL이 적용되어 있는 페이지에 공격자가 공격 대상의 HTTP Request를 스니핑 하여 SSL을 공격하는 방법

 - [공격대상] <- HTTP -> [공격자] <- HTTPS -> [HTTPS Server]

 - 자세한 내용은 구글 검색 ^_^


2. HSTS 설정방법

 1) HTTP Header

Strict-Transport-Security "max-age=86400; includeSubdomains; preload";

 

 - 옵션 설명

옵션명 

설명 

비고 

max-age

 HSTS가 브라우저에 설정될 시간 값 

초단위로 설정, Ex) 60*60*24 = 86,400 = 1day 

 includeSubdomains

 HSTS가 적용될 도메인의 서브 도메인 적용 여부

해당값을 추가하게되면 example.com-> www.example.com, test.example.com까지 확장되어 적용됩니다. 

 preload

 HSTS가 브라우저 측에서 Preload 적용여부

추가시 브라우저 preload list에 추가됩니다. 


  (1) apache httpd

Header always set Strict-Transport-Security "max-age=86400; includeSubdomains; preload"

  (2) nginx

add_header Strict-Transport-Security "max-age=86400; includeSubdomains; preload";


 2) 설정 확인


 


3. HSTS 해제방법

 - 강제로 HSTS를 삭제하는 방법, 사용자의 브라우저에서 삭제해야함.


 1) 서버에서

  (1) apache httpd

Header always set Strict-Transport-Security "max-age=0;"


  (2) nginx

add_header Strict-Transport-Security "max-age=0";


 2) Chrome

chrome://net-internals/#hsts


 


 - Delete domain security policies 에 삭제할 도메인 입력 후 DELETE 버튼 클릭

 - Query HSTS/PKP domain 에 삭제한 도메인 입력 후 Query 버튼 클릭

 - 결과는 'Not Found'가 나온다.


4. TIP

 - HSTS를 추가하면 max-age 값 동안 적용되므로, 테스트 환경에서 max-age를 짧게 잡고, 충분히 테스트 한 후 max-age를 늘리세요.



* 참고링크

 - https://lesstif.gitbooks.io/web-service-hardening/content/ssl-tls-https.html

 - https://rsec.kr/?p=315

 - https://www.ibm.com/support/knowledgecenter/ko/SSEQTJ_9.0.0/com.ibm.websphere.ihs.doc/ihs/tihs_hsts.html


'프로그래밍 > 일반' 카테고리의 다른 글

좋은 코드 작성하기.  (0) 2018.05.01
HSTS(HTTP Strict Transport Security) 개념과 설정  (0) 2018.03.08

+ Recent posts