ice rabbit programming

[보안] 안전하지 않은 코딩 스타일과 웹서버 보안 설정 본문

Development/Secutiry

[보안] 안전하지 않은 코딩 스타일과 웹서버 보안 설정

판교토끼 2022. 4. 17. 20:12

(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.)


이전 글에 이어서 안전하지 않은 코딩 스타일을 이어서 정리한다.

불필요한 Method 지원의 취약점

  • 웹 서버에 불필요한 HTTP 메소드가 허용되어 있을 경우, 악의적인 사용자가 이를 이용해 웹 서버를 변조하거나 시스템 권한을 획득할 수 있다.
  • 모든 메소드를 허용하지 않고, 사용하는 메소드만 허용하는 것이 좋다. 특히, GET을 이용한 조회 외에는 데이터를 추가/변경/삭제할 수 있다.

Null 포인터 역참조의 취약점

  • Null 포인터 역참조는 <객체는 null이 될 수 없다>는 가정을 위반했을 경우 발생한다.
  • 공격자가 의도적으로 Null 포인터 역참조를 실행하면, 그 때 발생하는 예외를 이용하여 공격에 이용될 수 있다.
  • Null이 될 수 있는 레퍼런스는 참조 전에 null 값인지 검사 후 안전하게 사용하는 편이 좋다. 비단 보안 관련 사항이 아니라도, 예기치 않은 오류를 발생시킬 수 있으므로 처리해주는 편이 좋다.

캡슐화 위배의 취약점

  • 중요한 데이터나 기능성을 충분히 캡슐화하지 못하는 경우, 인가된 데이터와 그렇지 않은 데이터가 혼재되어 있어 허용되지 않은 사용자들 간에 데이터 누출이 가능해질 수 있다.
  • OOP에서 캡슐화는 일반적으로 소프트웨어 개발 방법상의 상세한 구현 내용을 감추는 것으로 사용되기도 하지만, 소프트웨어의 보안 측면의 좀 더 넓은 의미도 가지고 있다.

 

서버 보안 강화 정책의 취약점

  • 시스템이라 함은 앱(클라이언트), 프레임워크, 앱 서버, DB 서버 등을 통틀어 지칭하는 용어이다.
  • 어떠한 시스템을 구성하는 요소의 보안 설정이 부적절하면, 전체 시스템에 걸쳐 보안을 위협 받을 수 있다.
  • 웹 서버에서는 디렉토리 리스팅, 에러 노출, 디폴트 설정 노출 등을 주의해야 한다.

 


맺으며

재작년에 보안 관련 강의를 수강하며 정리한 내용을 포스팅으로도 정리했다(본인이 게을러서 너무 오래 걸리긴 했다).

보안과 편의성은 양날의 검이지만, 어쨌거나 빼놓을 수 없는 굉장히 중요한 부분이다. 특히 대고객 서비스에서 개인 정보를 다루게 되는 서비스일 경우라면 더욱 그럴 것이다. 항상 이러한 점을 유념하고 서비스를 개발하는 것이 필요하다고 생각한다.

'Development > Secutiry' 카테고리의 다른 글

[보안] 안전하지 않은 코딩 스타일  (0) 2022.04.10
[보안] 중요 정보 노출  (2) 2022.03.05
[보안] 접근제어  (0) 2021.12.19
[보안] 계정 및 인증 관리  (0) 2021.10.05
[보안] 쿠키 및 세션 관리  (0) 2021.03.24