2013-03-09 4 views
0

다음 시나리오를 수락 할 수 있는지, 다른 방법으로 내가이 문제를 해결해야하는지 알려줄 수 있기를 바랍니다.ASP .Net 보안 구현

인증을 위해 자체 데이터베이스 (SQL) 모델을 사용하여 폼 인증을 사용하여 ASP .Net 사이트를 개발했습니다. 여러 사용자가 로그온 할 수 있습니다. 고려해야 할 한 가지 점은 각 사용자가 서로 다른 레코드에 액세스 할 수 없다는 것입니다.

코드에서 내가 가지고있는 페이지로드에 로그온 한 사용자의 세부 정보를로드하는 사용자 개체가 있습니다.

레코드를 액세스 할 때 전달 된 레코드의 ID가있는 하이퍼 링크가 있는데이 하이퍼 링크는 사용자가 전체 레코드를 볼 수있는 세부 정보 페이지로 리디렉션됩니다.

이제 세부 정보 페이지에 다시 현재 사용자에게 정보를로드 한 후 일부 SQL이 ID에 로그온 한 사용자와 전달 된 레코드의 ID에 의해 기록을 얻을 수 있습니다.

을 지금까지이있다 자신의 레코드에 액세스하는 사용자 1과 로그온 한 상태에서 작업했습니다. URL을 복사하여 다른 브라우저에 붙여 넣어 로그인 페이지로 리디렉션합니다. 이번에는 사용자 2와 로그인합니다. 페이지는 으로 표시되지만 세부 사항은 없습니다.

괜찮은가요? 그렇지 않으면해야 할 일이 있습니까? 물론 아무 것도 반환되지 않으면 빈 페이지를 표시하는 대신 Access Denied 페이지로 리디렉션을 구현합니다.

질문이 있으시면 언제든지 문의하십시오.

+0

제목을 특정 문제로 업데이트하십시오. [FAQ] 및 [ask]를 읽을 수 있습니다. –

+0

무엇이 질문입니까? 이미 구현 된 메커니즘이 안전한지 묻고 있습니까? 이것이 문제가된다면 올바른 사이트가 아닙니다. http://programmers.stackexchange.com/ –

답변

0

다른 말로하면 액세스 제어 목록을 기반으로 다른 사람의 레코드에 액세스 할 수 있지만 좀 더 복잡합니다.

필자가 작성한 것으로 변경하려는 유일한 점은 액세스 거부 페이지로의 "리디렉션"입니다. 오류 페이지에 대한 리디렉션을 수행하지 마십시오. 대신 원래 응답으로 오류 메시지를 반환하십시오. Server.Transfer을 사용하거나 응답 버퍼를 지우고 (필요한 경우) 페이지 내용을 올바른 메시지와 함께 ASCX로 설정하여 ASP.NET WebForms에서이 작업을 수행 할 수 있습니다. HTTP 상태를 403으로 설정하는 것을 잊지 마십시오.

+0

에 감사의 말씀을 전합니다. "원래 응답에 오류 메시지를 반환하십시오"라고 말하면 무엇을 의미합니까? 사용자가 다른 사용자 레코드에 액세스 할 때 반환 된 결과가 없습니다. 또는 0 레코드가 반환되면 사용자 Server.Transfer가 반환되는 것을 의미합니까? – Computer

+0

"원래 응답으로 오류 메시지를 반환합니다"라는 말은 사용자가 읽을 수있는 오류 메시지를 'Response.Redirect'를 수행하지 않고 사용자에게 반환해야한다는 것과 동일한 요청/응답으로 클라이언트에 반환해야한다는 것을 의미합니다 주기. – Dai

+0

행이 표시되지 않으면 "액세스가 거부되었습니다"라는 패널을 표시 할 수 있습니까? – Computer