많은 양의 데이터가 오가거나 외부로 노출 되어서는 안되는 중요 정보를 주고 받는 경우라면 보안은 매우 중요합니다. 하지만 다루기 어렵고 비용이 많이 발생한다는 이유로 우리에게 외면 받아왔습니다. 이번에는 웹 개발시 고려해야할 보안에 대해서 용어 이해하는 수준으로 간단히 정리 해볼까 합니다. 아래 본문 내용들은 정부에서 시행하는 소프트웨어 개발 사업에서 모두 적용되는 내용이니 도움이 되실 겁니다.





관리자 페이지 접근 통제 및 계정관리


당연한 이야기 입니다. 관리자 이외에는 관리자 페이지에 접속할 수 없어야 한다는 내용 입니다.





사용자 접근통제 및 로그관리


예를 들어 특정인에게만 서비스 되어야 하는 웹 서비스가 있을 수 있습니다. 이런 경우 회원 로그인 이라는 기능을 구현하여 사용자의 접근을 통제할 수 있습니다. 또한 사용자가 유입된 경로, 로그인 아이피, 로그인 시간, 로그아웃 시간 등 을 기록하여 로그로 활용할 수 있어야 합니다.





사용자 비밀번호 관리


본인 외에는 비밀번호를 변경할 수 없어야 하며, 정기적으로 비밀번호 변경 요구할 수 있어야 합니다.





비인가 페이지 접근


예를 들어 전체관리자 외에도 부관리자 가 있을 수 있으며 경우에 따라 부관리자는 전체관리자의 페이지를 접근하지 못해야하는 경우가 있을수 있습니다.





암호화 되지 않은 패킷에 의한 주요정보 노출


기계 또는 PC간의 통신이 이루어질때 패킷이 전달된다고 합니다. 패킷은 네트워크 망을 통해서 전달되는데요. 해커가 이를 탈취할 경우 패스워드 같은 민감한 정보를 볼 수 있게 됩니다. 이를 예방하기 패킷을 암호화해야하며 우리는 이 서비스를 https 또는 ssl 이라고 합니다. 





검색엔진을 통한 취약점 노출


외부로 노출되서는 안되는 페이지가 있다면 검색엔진이 이를 지나치게 만들거나 못보게 만들어야 합니다. 대표  방법으로 특정 경로를 검색 로봇이 지나쳐 버리게 하는것 입니다. 





HTTP Method 공격 취약점


GET과 POST 메소드는 너무 많이 알려져 잘 알고 있을 것 입니다. 그러나 이외에 OPTION, HEAD, PUT, DELETE, TARCE 의 메소드가 더 있음으로 불필요한 메소드는 차단해 놓아야 안전 합니다.





Directory Listing 취약점


웹 개발을 해보신 분이라면 한번쯤 웹 페이지에서 서버의 디렉토리 구조가 보이는 걸 경험 해보았을 것 입니다. 이것이 Directory Listing 취약점 입니다.





취약한 세션 및 쿠키


정해진 쿠키 및 세션이 아니라면 인식할 수 없도록 하는게 맞습니다. 또한 중요한 정보를 세션 및 쿠키에 임시로 저장해야 한다면 반드시 암호화하고 사용할때 복호화해야 합니다.





시스템 명령어 실행 취약점


예를 들어 php  소스코드에서 시스템(서버) 명령어를 사용할 수 있게 한다면 이에 해당 하며, 서버 설정을 바꾸주거나 사용을 제한해야 합니다.





파일 다운로드 취약점


필요에 의해서 웹에서 이미지 또는 문서 파일을 다운로드 받게 했다면, 프로그램 파일이나 보안이 요구되는 파일이 다운로드 되지는 않는지 확인이 필요 합니다. 예를 들어 jpg 파일을 다운로드 할수 있도록 프로그램을 만들었는데 이를 통해서 php나 ini 파일을 다운로드 받을수 있어서는 안되겠죠.





파일 업로드 취약점


.php .asp, .jsp 등과 같은 확장자로 파일이 업로드가 가능하다면 이에 해당 합니다.





파일 include 취약점


GET 이나 POST 로 include 할 파일명을 전달 하여 페이지를 여는 경우가 있습니다. 이런 경우 파일명을 변조하여 서버 내에 파일을 노출 시킬 수 있다면 이에 해당 합니다.





CSRF 취약점


사용자가 의도하지 않았지만 해커가 숨겨 놓은 소스로 인하여 서버가 공격 당하는 경우를 이야기 합니다. 대표적으로 외부 링크 안에 공격 소스를 포함하여 유포하는 방식이 있습니다. .css, .js 등





XSS 취약점


크로스 사이트 스크립팅 취약점은 url에 스크립트 소스를 넣어 공격이 가능한 취약점 입니다. 예시로 아래와 같은 경우 입니다.


index.php?name=<script>...</script>

 




악성콘텐츠 취약점


 게시글 쓰기와 같은 방법을 통해서 자바스크립트 또는 php, jsp, asp 소스를 넣어 등록하는 경우 걸러 내지 못한다면 이에 해당 합니다.





웹서버 방화벽 보안 설정


웹 : 80, FTP : 21 과 같이 반드시 사용되는 포트만 열어둬야 합니다.






웹페이지 오류정보 처리 취약점


오류 발생시 별도의 페이지를 만들어 리다이렉트 되게 만들어 오류 내용이 웹에 들어 나지 않게 해야 합니다.





웹 서버 백업파일 관리


언제든지 서버가 공격 받을수 있기 때문에 운영 서버와 분리된 망에 정기적으로 백업이 필요 합니다.





WebDAV 취약점


WebDAV는  FTP가 아닌 웹을 통해서 파일을 공유할수 있도록 하는 기술로 해커 공격에 매우 취약하여 사용하지 않는 것이 좋습니다.






SQL Injection 취약점


사용자를 위한 입력폼 또는 URL에 SQL를 삽입하여 DB를 조작하거나 보는 것이 이에 해당 합니다.





SSI Injection 취약점


html 내에 명령문을 입력하여 불필요한 데이터가 보여진다면 이에 해당 합니다. 예로 다음과 같은 경우가 있습니다.


<!-#echo var="DATE_LOCAL" ->





XPath Injection 취약점


XML 구조의 데이터 테이블에 개발자가 의도하지 않은 문자열을 전달해서 쿼리문을 왜곡하여 데이터를 보는 경우가 이에 해당 합니다.





LDAP Injection 취약점


입력폼 등을 이용하여 쿼리에 특수 문자가 포함되게 하고 이를 이용하여 허용되지 않은 정보까지 모두 볼 수 있는 경우가 이에 해당 합니다.





버퍼 오버플로우


의도적으로 많은 인수를 전달하여 강제로 오류를 발생시켜 노출되서는 안되는 정보들을 노출되게 하는 것을 말합니다.






[문의하기]




copyright ⓒ 2017. 워크식스








+ Recent posts