ASP 강의 시리즈(20개) ASP 애플리케이션의 보안 유지
저자:Eve Cole
업데이트 시간:2009-05-30 19:58:35
보안 설정을 올바르게 구성하는 것의 중요성을 결코 과소평가하지 마십시오. 보안 설정을 잘못 구성하면 ASP 응용 프로그램이 불필요한 변조에 노출될 뿐만 아니라 합법적인 사용자가 .asp 파일에 액세스하지 못하게 됩니다.
웹 서버는 ASP 응용 프로그램을 무단 액세스 및 변조로부터 보호하는 다양한 방법을 제공합니다. 이 항목의 보안 정보를 읽은 후 잠시 시간을 내어 Windows NT 및 웹 서버 보안 설명서를 주의 깊게 검토하십시오.
NTFS 권한 개별 파일 및 디렉터리에 NTFS 액세스 권한을 적용하여 ASP 응용 프로그램 파일을 보호할 수 있습니다. NTFS 권한은 웹 서버 보안의 기초로서 사용자 또는 사용자 그룹의 파일 및 디렉터리에 대한 다양한 액세스 수준을 정의합니다. 유효한 Windows NT 계정을 가진 사용자가 제한된 권한을 가진 파일에 액세스하려고 하면 컴퓨터는 파일의 ACL(액세스 제어 목록)을 확인합니다. 이 테이블은 다양한 사용자 및 사용자 그룹에 부여된 권한을 정의합니다. 사용자의 계정에 파일을 열 수 있는 권한이 있는 경우 컴퓨터는 사용자가 파일에 액세스하도록 허용합니다. 예를 들어, 웹 서버의 웹 응용 프로그램 소유자가 응용 프로그램의 .asp 파일을 보고, 변경하고, 삭제하려면 변경 권한이 필요합니다. 그러나 애플리케이션에 액세스하는 일반 사용자에게는 읽기 전용 권한만 부여하여 애플리케이션의 웹 페이지를 볼 수만 있고 변경할 수는 없도록 제한해야 합니다.
Global.asa 보안 유지 ASP 응용 프로그램을 완벽하게 보호하려면 해당 사용자 또는 그룹에 대해 응용 프로그램의 Global.asa 파일에 대한 NTFS 파일 권한을 설정하십시오. Global.asa에 브라우저에 정보를 반환하는 명령이 포함되어 있고 Global.asa 파일을 보호하지 않으면 응용 프로그램의 다른 파일이 보호되어 있어도 정보가 브라우저에 반환됩니다.
참고 응용 프로그램 파일에 균일한 NTFS 권한을 적용해야 합니다. 예를 들어, 응용 프로그램에 포함되어야 하는 파일에 대해 실수로 NTFS 권한을 과도하게 제한한 경우 사용자는 응용 프로그램을 보거나 실행하지 못할 수 있습니다. 이러한 문제를 방지하려면 응용 프로그램에 NTFS 권한을 할당하기 전에 신중하게 계획하십시오.
웹 서버 권한 웹 서버에 대한 권한을 구성하여 모든 사용자가 ASP 페이지를 보고, 실행하고, 조작할 수 있는 방법을 제한할 수 있습니다. 응용 프로그램 파일 및 디렉터리에 대한 특정 사용자의 액세스를 제어하는 방법을 제공하는 NTFS 권한과 달리 웹 서버 권한은 모든 사용자에게 적용되며 사용자 계정 유형을 구별하지 않습니다.
ASP 응용 프로그램을 실행할 사용자의 경우 웹 서버 권한을 설정할 때 다음 지침을 따라야 합니다.
.asp 파일이 포함된 가상 디렉터리에 대한 읽기 또는 스크립트 권한을 허용합니다.
.asp 파일과 스크립트가 포함된 기타 파일(예: .htm 파일 등)이 있는 가상 디렉터리에 대해 "읽기" 및 "스크립트" 권한을 허용합니다.
.asp 파일과 실행하는 데 실행 권한이 필요한 기타 파일(예: .exe 및 .dll 파일 등)이 포함된 가상 디렉터리에 대한 읽기 및 실행 권한을 허용합니다.
스크립트 매핑 파일 응용 프로그램의 스크립트 매핑은 웹 서버가 실수로 .asp 파일의 소스 코드를 다운로드하지 않도록 보장합니다. 예를 들어, .asp 파일이 포함된 디렉터리에 대해 읽기 권한을 설정하더라도 .asp 파일이 사용자의 스크립트 매핑 응용 프로그램에 속해 있는 한 웹 서버는 파일의 소스 코드를 반환하지 않습니다.
쿠키 보안
ASP는 SessionID 쿠키를 사용하여 응용 프로그램 방문 또는 세션 중에 특정 웹 브라우저 정보를 추적합니다. 이는 해당 쿠키가 포함된 HTTP 요청이 동일한 웹 브라우저에서 오는 것으로 간주됨을 의미합니다. 웹 서버는 SessionID 쿠키를 사용하여 사용자별 세션 정보로 ASP 응용 프로그램을 구성할 수 있습니다. 예를 들어, 응용 프로그램이 사용자가 CD를 선택하고 구입할 수 있는 온라인 음악 상점인 경우 SessionID를 사용하여 응용 프로그램 전체를 돌아다니는 사용자의 선택을 추적할 수 있습니다.
해커가 SessionID를 추측할 수 있나요?
컴퓨터 해커가 SessionID 쿠키를 추측하여 합법적인 사용자의 세션 변수에 액세스하는 것을 방지하기 위해 웹 서버는 무작위로 생성된 번호를 각 SessionID에 할당합니다. 사용자의 웹 브라우저가 SessionID 쿠키를 반환할 때마다 서버는 SessionID와 할당된 번호를 검색한 다음 서버에 저장된 생성된 번호와 일치하는지 확인합니다. 두 숫자가 일치하면 사용자는 세션 변수에 액세스할 수 있습니다. 이 기술의 효율성은 할당된 숫자의 길이(64비트)에 있으며, 이로 인해 컴퓨터 해커가 SessionID를 추측하고 사용자의 활성 세션을 훔칠 가능성이 거의 0이 됩니다.
중요한 SessionID 쿠키 암호화
사용자의 sessionID 쿠키를 가로채는 컴퓨터 해커는 이 쿠키를 사용하여 사용자를 가장할 수 있습니다. ASP 응용 프로그램에 개인 정보, 신용 카드 또는 은행 계좌 번호가 포함되어 있는 경우 도난당한 쿠키를 가진 컴퓨터 해커는 응용 프로그램에서 활성 세션을 시작하고 이 정보를 얻을 수 있습니다. 웹 서버와 사용자 브라우저 간의 통신 링크를 암호화하여 SessionID 쿠키가 가로채는 것을 방지할 수 있습니다.
인증 메커니즘을 사용하여 제한된 ASP 콘텐츠 보호 제한된 ASP 콘텐츠에 액세스하려는 각 사용자에게 유효한 Windows NT 계정 사용자 이름과 암호가 있어야 한다고 요구할 수 있습니다. 사용자가 제한된 콘텐츠에 액세스하려고 시도할 때마다 웹 서버는 인증 또는 사용자 신원 확인을 수행하여 사용자가 유효한 Windows NT 계정을 가지고 있는지 확인합니다.
웹 서버는 다음 인증 방법을 지원합니다.
기본 인증 사용자에게 사용자 이름과 비밀번호를 묻는 메시지를 표시합니다.
Windows NT 요청/응답 인증은 사용자의 웹 브라우저에서 사용자 신원 정보를 암호화하여 얻습니다.
그러나 웹 서버는 Windows NT 파일 시스템 권한에 의해 익명 액세스가 금지되거나 제한되는 경우에만 사용자를 인증합니다.
메타베이스 보안 메타베이스에 액세스하는 ASP 스크립트에는 웹 서버가 실행되는 컴퓨터에 대한 관리자 권한이 필요합니다. 원격 컴퓨터에서 이러한 스크립트를 실행하는 경우 Windows NT 요청/응답 인증을 사용하는 등 인증된 연결을 통해 연결해야 합니다. 관리 .asp 파일에 대한 서버나 디렉터리를 만들고 해당 디렉터리 보안 인증 방법을 Windows NT 요청/응답 인증으로 설정해야 합니다. 현재 Windows NT 요청/응답 인증은 Microsoft Internet Explorer 버전 2.0 이상에서만 지원됩니다.
SSL을 사용하여 애플리케이션 보안 유지
웹 서버 보안 기능인 SSL(Secure Sockets Layer) 3.0 프로토콜은 사용자와의 암호화된 통신 연결을 설정하는 안전한 가상의 투명한 방법을 제공합니다. SSL은 웹 콘텐츠의 인증을 보장하고 제한된 웹 사이트에 액세스하는 사용자의 신원을 확실하게 확인할 수 있습니다.
SSL을 사용하면 제한된 ASP 응용 프로그램에 액세스하려는 사용자에게 서버와의 암호화된 연결을 설정하도록 요구할 수 있습니다. 이렇게 하면 사용자와 응용 프로그램 간에 교환되는 중요한 정보가 가로채는 것을 방지할 수 있습니다.
포함된 파일에 대한 보안 유지 보호되지 않은 가상 루트 디렉터리에 있는 .asp 파일에서 SSL 사용 디렉터리에 있는 파일을 포함하는 경우 포함된 파일에 SSL이 적용되지 않습니다. 따라서 SSL이 적용되도록 하려면 포함 파일과 포함 파일이 모두 SSL 지원 디렉터리에 있는지 확인하세요.
클라이언트 인증 ASP 응용 프로그램에 대한 액세스를 제어하는 매우 안전한 방법은 사용자에게 클라이언트 인증을 사용하여 로그인하도록 요구하는 것입니다. 고객 자격 증명은 사용자의 신원 정보를 포함하고 여권이나 운전 면허증과 같은 전통적인 신분증과 동일한 방식으로 기능하는 디지털 ID 카드입니다. 사용자는 일반적으로 자격 인증서를 발급하기 전에 사용자의 신원 정보를 확인하는 위탁된 제3자 기관으로부터 고객 자격을 취득합니다. (일반적으로 이러한 조직에서는 이름, 주소, 전화번호 및 조직 이름을 요구하며, 이 정보의 세부정보 수준은 제공된 상태 수준에 따라 다릅니다.)
사용자가 자격 확인이 필요한 애플리케이션에 로그인을 시도할 때마다 사용자의 웹 브라우저는 자동으로 사용자의 자격 증명을 서버에 보냅니다. 웹 서버의 SSL(Secure Sockets Layer) 자격 매핑 기능이 올바르게 구성되어 있으면 서버는 ASP 응용 프로그램에 대한 액세스 권한을 부여하기 전에 사용자의 신원을 확인할 수 있습니다.
자격 인증 처리를 위한 ASP 스크립트 ASP 응용 프로그램 개발자는 자격이 있는지 확인하고 자격 필드를 읽는 스크립트를 작성할 수 있습니다. 예를 들어 자격에서 사용자 이름 필드와 회사 이름 필드에 액세스할 수 있습니다. Active Server Pages는 Request 개체의 ClientCertificate 컬렉션에 자격 정보를 저장합니다.
웹 서버는 ASP를 통해 처리되기 전에 클라이언트 자격을 수락하거나 요구하도록 구성되어야 합니다. 그렇지 않으면 ClientCertificate 컬렉션이 비어 있게 됩니다.