2010-07-30 4 views
0

회원 페이지가있는 ASP.NET 웹 사이트를 구축 중입니다. 회원 페이지를 유지하는 폴더를 만들었고 로그인하거나 새 계정을 만들면 액세스 할 수 있습니다. 문제는이 멤버 페이지의 URL을 어떻게 안전하게 만들어서 다른 사람이 브라우저 나 북마크에 복사 할 수 있도록 URL을 제공하지 못하게하는 것입니다. 어떤 제안이라도 대단히 감사합니다.안전한 페이지 만들기

답변

0

web.config의 인증 요소를 통해이 작업을 수행 할 수 있습니다.

http://support.microsoft.com/kb/316871이에 대한 자세한 내용을 가지고 있지만 대략이 같이 가지 추가 할 것입니다 :이 모든 익명의 사용자에게 그 하위 디렉터리에 대한 액세스를 거부합니다

<location path="subdir1"> 
    <system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 
    </location> 

합니다. 응용 프로그램의 페이지에

폼 기반 ASP.NET 응용 프로그램에서 인증 를 사용하여 만 인증 된 사용자가 부여되는 액세스 :

은 위의 MSDN 페이지를 인용합니다. 인증되지 않은 사용자는 의Web.config 파일의 loginUrl 속성으로 지정된 페이지로 자동 리디렉션됩니다. 의 경우 사용자가 인증을 요구하지 않고 응용 프로그램의 특정 페이지에 액세스하려면 을 허용 할 수 있습니다.


편집 : 테스트 사용자 페이지의 사용자의 편집에 대응

후 작동 할 수 있습니다 내가 그 생각할 수있는 두 가지 방법이 있습니다. 페이지가 특정 사용자에게만 특정 된 경우 URL에서 사용자 정보를 가져 오는 대신 코드에 로그인 한 사용자가 누구인지 찾아보고 페이지를 제공 할 수 있습니다. 예를 들어, 현재 회원/mypage.aspx? user = bob을보고있는 경우 회원/mypage.aspx에 링크 만하고 코드에 로그인 한 사용자의 이름을 사용하십시오. 그런 다음 코드에 Bob이 아닌 Bob의 페이지를 원한다고 말할 수있는 방법이 없습니다.

페이지를 볼 수있는 사용자 그룹 (예 : admin)이있는 경우 권한을 확인하려면 페이지에 코드를 입력해야합니다. 특정 페이지의 경우 사용자를 어떻게 든 볼 수 있어야합니다 (예 : 허용 된 사용자 역할에 대해 해당 페이지를 검색하여 역할 목록을 가져온 다음) 로그인 한 사용자가 볼 수있는 사용자 목록에 있는지 확인하십시오 (사용자가 해당 역할 중 하나를 가지고 있습니까?

예를 들어 Bob은 admin이고 Frank는 그렇지 않습니다 .admin.aspx 페이지로 이동하면 먼저 admin.aspx를 검색하여 Admin 및 SuperAdmin 역할을 확인합니다. 그런 다음 로그인 된 사용자를 검색하여 허용 된 역할 목록에서 해당 역할을 찾을 때까지 반복합니다. 정상적으로 페이지를 처리 ​​한 경우, 그렇지 않으면 다른 페이지로 리디렉션하거나 예외 (예 : 전역 이벤트 핸들러에서 catch 된 사용자의 MyAccessDeniedException을 던져 사용자에게 권한이 없다는 메시지를 표시)

이 모든 작업은 페이지의 기본 클래스에서 수행 할 수 있으므로 모든 페이지에 코드를 포함하지 않아도됩니다. 즉, 페이지에서 상속받은 MyPage를 만들 수 있으며 MyPage의 onload (또는 oninit 또는 공상하는 곳)에서이 보안 검사를 실행할 수 있습니다.그런 다음 사이트의 모든 페이지가 페이지 대신 MyPage를 상속하면 모든 페이지에서 바로 기능을 사용할 수 있습니다.

잘하면이 질문에 대한 답변입니다.

+0

(A) 사용자 (B)의 보안 페이지를 봅니다. 둘 다 규칙에 따라 허용되지만 B는 A를 볼 수 있습니다. – Dewfy

+0

방금 ​​rep 페이지에서이 응답에 -1 (및 +1)이 있음을 알았습니다. 왜 -1 원래의 대답조차도 내가 말한 것처럼 질문에 대답하는 것처럼 보였기 때문에 ... – Chris

+0

죄송합니다, 그 실수를 저 지르지 않았습니까? – pmoth81

0

web.config에서 허용 된 사용자 만이 폴더를 지정해야합니다.

그 회원은이 페이지를 참조 코드 (403)와 HttException을 던져 허용 단지 (를 Page_Load에서 예를 들어) 검사를 추가 개별 보안 (사람에 대한 사람)을 부여하려면 (금지) 때 사용자를 방지하는 방법

+0

나는 그 일을하고 있지만 사용자가 단순히 보안 페이지 URL을 다른 브라우저에 복사 할 수 없도록 URL을 안전하게 만들고 싶습니다. – pmoth81

+0

@ pmoth81 - URL은 많은 참가자가 볼 수 있지만 개발자는 허용 된 사용자 만이 가질 수 있도록 허용해야합니다 그것에 접근하십시오. URL 복사를 피하기 위해 많은 힘을 쏟아 부었지만 내 URL을 복사하여 다른 URL로 변경하는 것을 막을 수있는 방법은 무엇입니까? 예 : http : // yourwerb/secured/user-dewfy - 언제든지 수동으로 변경할 수 있습니다 http : // yourwerb/secured/user-pmoth81 – Dewfy

+0

좋습니다. ASP.NET을 사용하여 만든 내 웹 사이트에는 모든 사용자가 볼 수있는 페이지와 계정을 만든 멤버 만 사용할 수있는 특정 페이지가 있습니다. 이 회원 페이지는 별도의 폴더에 보관됩니다. ASP.NET 구성 설정에서 액세스 규칙을 설정하여 로그인 한 사용자 만이 페이지에 액세스 할 수 있도록합니다. (아래 계속) – pmoth81