본문 바로가기
프로그래머/프로그래밍

웹페이지 구현시 기본 보안 항목

by plog 2009. 5. 17.

1. 모든 페이지에서 사용자 인증을 확실히하여 관리자 또는 권한이 있는 사람만 볼수 있는 페이지를
  중간페이지 또는 우회페이지를 통해서 접근하지 못하도록 확실히 체크해 주십시요.
  (일반사용자는 볼 필요가 없는 관리자페이지 같은경우는 파일명을 유추하기 어려운 이름으로 변경)

2. 중요한 데이터가 처리되는 곳에서는 SSL기술을 사용하여 데이터 암호화 적용

3. IIS를 통해서 강제적으로 접근방어
  IIS에서 관리자 페이지가 들어있는 폴더를 선택하고 속성 - 디렉토리보안 - IP주소 및 도메인 이름제한
  편집으로 들어가셔서 액세스 거부를 선택하고 추가 버튼을 클릭하여 관리자 IP주소를 등록 이렇게 하게되면 해
  당 관리자 ASP페이지는 관리자 ip주소로 접근한 pc만이 접근이 가능하다

4. 모든 변수값을 넘기고 받을때는 인자에 대한 검증을 해야함 (강제적으로 변조하여 공격시도를 할수있음)
   데이터유형, 허용한 문자셋, 최대길이, NULL 허용여부, 타당한 패턴의 값인지...

5. Server.HTMLEncode() 함수를 통해서 특수기호등을 encoding하여 db에 저장
  ( 좌측꺽쇠를 <  우측꺽쇠를 > 이런식으로 특수기호를 전부 치환해주는 함수)
  사용자의 악의적인 html코드나 자바스크립트 코드 실행 등을 막아준다.
  나중에 출력시에는 원래대로 보여줘도 괜찮은 태그들만  replace함수를 통해 치환해준다


6. 입력,수정화면에서 사용자가 악의로 SQL구문을 넣어서 실행시키는 것을 방지하기 위해
  큰따옴표, 작은따옴표, 세미콜론등을 REPLACE로 치환시켜 에러를 방지

7. 파일 업로드시 확장자를 제한한다 ( ASP, PHP, JSP, INC, js 등의 파일이 업로드 되지 못하도록 구현)
  악의적인 웹페이지 변조를 막을 수 있다
  또한 IIS에서 업로드 되는 폴더에 대한 디렉토리 실행권한을 "없음"으로 선택해서 최악의 경우 파일업로드로
  인해 외부해커가 폴더권한을 획득하더라도 최소한의 권한만 획득할 수 있게 한다.

8. 파일 다운로드시 정해진 폴더에서 정해진 파일을 통해서만 다운로드가 되도록 하며
  파일명과 폴더를 변수로 분리하여 검증을 통해 하위경로, 또는 상대경로를 탐색하려는 문구가 들어있는 파일명의
  경로탐색 구문 제거

9. 모든 중요한 최종 메커니즘은 서버에서 수행해야 한다
  클라이언트 단에서이루어지는 모든 과정은 언제든지 악의적인 해커에 의해 변조될 수 있음을 생각하고 중요한 처
  리에 대한최종 점검은 서버단에서 이루어지게 해야함

10. 중요정보가 보여지는 페이지에 대해서는 캐쉬를 하지 못하도록 No-cashe설정

11. 모든 인클루드 파일은 .inc나 lib등의 확장자를 되도록 쓰지말고 asp파일로 저장한다
  (inc파일이나 lib파일의 경우 웹에서 바로 접근하게 되면 파일내용이 모두 보여지게 된다)

12. 세션에 대한 timeout시간 설정 및 Session.Abandon 를 통해서 필요한 경우 언제든지 세션을 모두 종료할 수 있
   도록 해준다

13. sql 쿼리를 asp코드안에 넣는 방법보다 저장프로시저를 이용해 생성하는것이 더 안전하다

14. asp에 사용되는 sql계정에 sa, admin등의 최고권한 계정보다는 각 DB에 필요한 계정을 따로 생성하여 관리한다


 

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

XML SAX, DOM 파서 비교  (0) 2009.05.28
Http 오류코드 정리  (0) 2009.05.17
ASP에서 Cache-Control 설정 하기  (0) 2009.04.01
XP 환경 vb6.0 에서 휠 기능 사용하기  (0) 2009.02.26
struts2 redirect action 예제  (0) 2009.02.04

댓글