2011-04-20 2 views
0

저는 ASP.NET에 익숙하지 않습니다.페이지 액세스 제한은 지정된 페이지에서 입력 할 수 있습니까?

사용자를 제한하는 방법이 지정 페이지에서만 입력 할 수 있습니까?

마찬가지로 정보를 입력하려면 페이지 A를 사용하고 제출하면 Response.Redirect를 페이지 B에 사용합니다.하지만 사용자가 URL에서 직접 페이지 B에 들어갈 수있는 것은 원하지 않습니다. 내가 세션을 사용하는 경우 ..

, 다음 사용자가 세션을 종료 브라우저를 종료하지 않은 경우 다른 사용자는

... 직접 페이지 B로 갈 수 있기 때문에 이들에 대한 액세스를 컴퓨터 페이지는 일반인이 사용하기 때문에 어쨌든 단방향 처리 만 수행하는지 확인하고 싶습니다. 이전 페이지로 돌아가거나 다른 페이지로 이동할 수 없습니다.

미리 감사드립니다.

+0

세션을 사용할 때의 단점은 아래에 설명 된 세션/URL 기반 솔루션을 구현할 수 있다는 것입니다.하지만 시간 기반의 일종의 시간적 유예가 여전히 필요합니다. – KTF

+0

흠 세션/URL 기반? 나는 당신이 아래에서 설명했던 것과 같은 것을 의미하는지, DateTime 매개 변수와의 세션 그리고 DateTime이 URL을 따라야하는지 궁금합니까? 그래서 우리는 유효한 URL을 확인할 수 있습니까? – King

+0

예. 쿼리 문자열에는 키/해시 만 포함되지만 세션 또는 데이터베이스에서는 키/해시를 생성 할 때 *를 저장할 것이므로 구식이 아닌지 확인할 수 있습니다. – KTF

답변

0

다른 페이지를 제어하는 ​​경우 세션을 시작하고 세션 변수를 직렬 키와 매우 비슷하게 서버에서만 만들 수있는 값으로 설정하십시오. 예를 들어, 72150166은 두 번째 숫자의 합계가 다른 모든 숫자 (7 + 1 + 0 + 6 = 2 + 5 + 1 + 6)의 합계와 같기 때문에 복잡하거나 원하는만큼 알고리즘을 선택할 수 있습니다. 사용자가 두 번째 페이지로 이동하면 세션 변수를 확인하십시오. 이것은 무적의 보안이 아니지만 리퍼러를 검사하는 것보다 낫습니다 (특히 일부 브라우저에서는 설정하지 않기 때문에). 특정 페이지에서 가져온 보안을 엄격하게 지정할 필요는 없다고 생각합니다.

편집 : 또한 데이터베이스에 추가하고 특정 사용자의 IP와 연결하여 다른 사람이 동일한 키를 사용할 수 없도록해야합니다.

+0

Minitech의 제안에 추가하면이 키가 만료 될 수도 있습니다. 이것은 보안의 추가 레이어를 추가합니다. (같은 URL 키 ... 만료와 동일한 원칙) – KTF

+0

흠, 내가 실제로 DateTime.Now + 1 분 세션을 페이지에 저장할 수 있습니다, 그렇다면 DateTime 세션이 페이지 B에서 만료되지 않도록 확인할 수 있습니다 . 감사! 이것은 내가 원하는 것을해야한다! – King

+0

예 - 키를 저장해야합니다. – KTF

0

Page Load of PageB에서 Request.UrlReferrer 속성을 사용하여 요청한 페이지를 확인할 수 있습니다. 요청이 PageA에서 오는 것이 아니라면 사용자를 PageA로 리디렉션하십시오.

확인 자세한 내용은이 링크 : http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

참고 : UrlReferrer는 요청 헤더에 의존하고 누군가가 페이지 A에서 오는 요청을 모방하기 위해 헤더를 설정할 수 있습니다.

+0

음 ... 더 안전한 방법이 있는지 궁금합니다. – King

0

리디렉션되는 페이지에서 특정 생성 된 해시/키를 빠르게 또는 만료 된 쿼리 문자열에 보낼 수 있습니다. 이것은 보안 측면에서 훨씬 더 견고해야합니다.

해쉬를 생성하는이 키 또는 값을 저장하는 방법이 필요합니다. 수신 측에서 유효성을 검사 할 수 있습니다. DB를 생각할 것입니다.

관련 문제