이 문서에서는 단순한 ASP(Active Server Pages) 코드를 작성하여 로그온 페이지로 액세스를 제한하는 방법을 설명합니다. 이 문서에서 사용되는 방법은 단순합니다. 좀 더 강력한 기능이나 보안을 사용하는 방법은 이 문서의 참조 절에 있는 문서를 참조하십시오.
이 예에서 만들 페이지는 다음 두 가지입니다.
이 예에서 만들 페이지는 다음 두 가지입니다.
- MyPage.asp: 이 페이지는 보호되어 있으며 올바른 사용자 이름과 암호 없이는 이 페이지를 탐색할 수 없습니다.
- Logon.asp: 이 페이지는 사용자 자격 증명을 입력하는 폼을 제공합니다. 그런 다음 폼은 사용자 이름과 암호를 확인합니다. 사용자 이름과 암호가 올바르면 클라이언트에 쿠키를 기록합니다. 이 쿠키는 다른 ASP 페이지에 액세스하기 위한 "키" 역할을 합니다.
응용 프로그램 만들기
이들 ASP 페이지를 만들려면 메모장을 사용하십시오. 메모장을 시작하려면 Windows의 시작 메뉴에서 프로그램과 보조프로그램을 차례로 가리킨 다음 메모장을 누릅니다. 그런 다음 로컬 웹 서버의 루트 웹(대개 C:\InetPub\Wwwroot\)에 위의 각 문서를 저장하십시오. 문서의 위치를 변경하면 그에 따라 각 파일의 스크립트도 수정해야 합니다.Logon.asp
- 메모장의 파일 메뉴에서 새로 만들기를 누릅니다.
- 다음 코드를 선택하여 강조 표시하고 마우스 오른쪽 단추로 누른 다음 바로 가기 메뉴에서 복사를 누릅니다. 메모장에서 편집 메뉴의 붙여넣기를 눌러 다음 코드를 붙여 넣습니다.
<html> <head> <title>Logon Form</title> <% Username="Administrator" Password="Admin" Validated = "OK" if Strcomp(Request.Form("User"),Username,1)=0 AND Request.Form("password") = Password then 'Set the validation cookie and redirect the user to the original page. Response.Cookies("ValidUser") = Validated 'Check where the users are coming from within the application. If (Request.QueryString("from")<>"") then Response.Redirect Request.QueryString("from") else 'If the first page that the user accessed is the Logon page, 'direct them to the default page. Response.Redirect "MyPage.asp" End if Else ' Only present the failure message if the user typed in something. If Request.Form("User") <> "" then Response.Write "<h3>Authorization Failed.</h3>" & "<br>" & _ "Please try again.<br> <br>" End if End if %> </head> <body bgcolor="#FFFFFF"> <FORM ACTION=<%Response.Write "Logon.asp?"&Request.QueryString%> method="post"> <h3>Logon Page for MyPage.asp</h3> <p> Username: <INPUT TYPE="text" NAME="User" VALUE='' size="20"></INPUT> Password: <INPUT TYPE="password" NAME="password" VALUE='' size="20"></INPUT> <INPUT TYPE="submit" VALUE="Logon"></INPUT> </FORM> </body> </html>
- 이 페이지를 C:\InetPub\Wwwroot\ 폴더에 Logon.asp로 저장합니다.
MyPage.asp
MyPage.asp는 보호하려는 페이지입니다. 파일 확장명이 .asp인 페이지는 모두 사용할 수 있습니다.- 메모장에서 파일 메뉴의 새로 만들기를 누릅니다.
- 다음 코드를 선택하여 강조 표시하고 마우스 오른쪽 단추로 누른 다음 바로 가기 메뉴에서 복사를 누릅니다. 메모장에서 편집 메뉴의 붙여넣기를 눌러 다음 코드를 붙여 넣습니다.
<% Validated = "OK" if Request.Cookies("ValidUser") <> Validated then 'Construct the URL for the current page. dim s s = "http://" s = s & Request.ServerVariables("HTTP_HOST") s = s & Request.ServerVariables("URL") if Request.QueryString.Count > 0 THEN s = s & "?" & Request.QueryString end if 'Redirect unauthorized users to the logon page. Response.Redirect "Logon.asp?from=" &Server.URLEncode(s) End if %> <html> <head> <title>My Protected Page</title> </head> <body> <p align="center">This is my secret information<br> You cannot see it unless you<br> are properly logged on!</p> </body> </html>
- 이 페이지를 C:\InetPut\Wwwroot\ 폴더에 MyPage.asp로 저장합니다.
응용 프로그램 테스트
- 웹 브라우저를 엽니다. Microsoft Internet Explorer를 사용하는 경우에는 Windows의 시작 메뉴에서 프로그램을 가리킨 다음 Internet Explorer를 누릅니다.
- 주소 표시줄에 다음 주소를 입력한 다음 Enter 키를 누릅니다.
http://localhost/MyPage.asp그러면 Logon.asp로 리디렉션됩니다.
- Logon.asp 파일에서 ASP 코드에 포함된 사용자 이름(Administrator)과 암호(Admin)를 입력한 다음 Logon을 누릅니다. 그러면 MyPage.asp 페이지가 나타납니다.
- 잘못된 사용자 이름이나 암호를 입력하면 로그온이 되지 않아서 MyPage.asp로 이동할 수 없습니다.
기타 고려 사항
- ASP 페이지를 보호하려면 ASP 페이지 맨 위에 즉, 다른 코드 앞에 다음 코드를 추가하십시오.
<% Validated = "OK" if Request.Cookies("ValidUser") <> Validated then 'Construct the URL for the current page. dim s s = "http://" s = s & Request.ServerVariables("HTTP_HOST") s = s & Request.ServerVariables("URL") if Request.QueryString.Count > 0 THEN s = s & "?" & Request.QueryString end if 'Redirect unauthorized users to the logon page. Response.Redirect "Logon.asp?from=" &Server.URLEncode(s) End if %>
- 요청한 페이지로 로그온하고 리디렉션되려면 하이퍼링크가 Logon.asp 페이지가 아닌 실제 페이지를 가리켜야 합니다. 이 예제에서는 하이퍼링크가 MyPage.asp를 가리키는지 확인하십시오. 아직 로그온을 하지 않았으면 MyPage.asp의 코드가 Logon.asp로 자동 리디렉션시킵니다.
- 사이트 방문자의 컴퓨터에 ValidUser 쿠키를 저장하여 해당 방문자가 사이트를 방문할 때마다 이 쿠키 정보를 사용하여 로그온하도록 만들 수 있습니다. 앞의 예제 코드에서는 세션 시간이 초과되거나 브라우저 창이 닫히자마자 쿠키가 만료됩니다. 쿠키 만료 기간을 설정하려면 Logon.asp에서 다음 코드를
Response.Cookies("ValidUser") = Validated
Response.Cookies("ValidUser") = Validated Response.Cookies ("ValidUser").Expires = DATE + 1
Response.Cookies ("ValidUser").Expires = DATE + 365
주의할 점
- ASP 로그온 페이지는 대부분의 응용 프로그램에 유용하지만 가장 높은 수준의 보안을 제공하지 못합니다. 일반적으로 가장 높은 수준의 보안을 제공하는 것은 NTFS입니다. NTFS를 사용할 때는 사용자가 Microsoft Windows에서 인식할 수 있는 사용자 이름과 암호를 입력해야 합니다. NTFS 보안은 하드 디스크의 파일과 폴더에 대한 사용 권한을 설정하는 데 사용될 수 있습니다.
또한, ASP 보안은 Microsoft Internet Information Server(IIS) 보안을 토대로 작동합니다. 따라서 IIS의 보안을 설정하지 않은 상태에서는 ASP 보안 기능을 추가해도 정교한 기술로 무장한 사용자가 사이트에 액세스하는 것을 막을 수 없습니다.
IIS와 ASP 보안에 대한 자세한 내용은 "참조" 절을 참조하십시오. - 앞의 예제 코드에서는 사용자 자격 증명 집합 하나만 허용합니다. 데이터베이스에 여러 사용자 이름을 저장하여 ASP 로그온 페이지를 사용하는 방법은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
299987 (http://support.microsoft.com/kb/299987/ ) 데이터베이스 및 ASP 세션을 사용하여 ASP 보안을 구현하는 방법
- 쿠키 만료 날짜를 설정하면 해당 페이지를 방문할 때 사용한 컴퓨터에 쿠키가 저장됩니다. 따라서 인터넷 카페의 컴퓨터와 같은 공용 컴퓨터에서 해당 페이지로 이동하면 쿠키가 공용 컴퓨터에 저장되어 다른 누군가가 이 정보를 읽거나 복사할 가능성이 생깁니다. 쿠키 만료 날짜를 설정하지 않으면 컴퓨터의 하드 디스크가 아닌 메모리에만 쿠키가 저장되기 때문에 사용자가 브라우저를 닫자마자 컴퓨터 메모리에서 삭제됩니다.
'네트워크보안 > asp' 카테고리의 다른 글
쿠키와 세션정리 (0) | 2012.02.15 |
---|---|
ASP.NET에서의 쿠키 암호화 (0) | 2012.02.15 |
쿠키를 이용한 로그인 예제 (0) | 2012.02.15 |
쿠키 세션이 제대로 생성되지 않을때 (0) | 2012.02.15 |
쿠키 사용 예제 (0) | 2012.02.15 |