2012-05-19 2 views
1

내가하는 방식으로 내용 표시 여부를 제어하는 ​​몇 가지 사용자 정보를 저장하는 방법을 알아 내려고 노력하고 있어요 :영구 수정할 수없는 브라우저 (클라이언트 측) 저장 개체

  • 가 서버에 지속적으로 여행을 필요로하지 않음을 쿼리 SQL은/​​사용자가 무엇을 볼 수에 대한 액세스 및
  • 사용자가 브라우저의 개발자 도구에서 편집 할 수 없습니다/콘솔

쿠키, 쿼리 문자열, 심지어 HTML5 로컬 저장소 또는 SQLite는 모두 훌륭한 저장되어이 없습니다 옵션을 사용할 수 있지만 모두 기술에 정통한 사용자. 쿼리를 제한하면서 사용자의 보안 수준을 기반으로 콘텐츠를 제어하고 사용자가 해킹 할 수 없게하는 방법은 무엇입니까?

답변

1

특정 콘텐츠를 사용자가 보지 못하게하는 유일한 방법은 내용 서버 측에 대한 액세스를 확인하고 그들에게 그것을 렌더링하지 않는 것입니다. 클라이언트 측 유효성 검사는 회피 될 수 있습니다. 사용자가 볼 수없는 정보를 로컬에 저장하는 방법을 고안하더라도 은 콘텐츠를으로 전송하고 클라이언트 측 코드를 사용하여 해당 값을 확인할 수 있습니다.

사용자가 보낸 모든 콘텐츠를 볼 수 있습니다.

역할 및 사용 권한을 확인하기 위해 SQL 데이터베이스를 항상 일정하게 트립 할 필요는 없습니다. 세션 상태와 같이 캐시 된 일부 역할 및 권한을 서버 측에서 유지하고 사용자 세션이 끝날 때까지 유효성을 검증 할 수 있습니다. 이 시점에서 사용자가 페이지를 요청하기 때문에 성능 비용이 발생하지 않습니다. 각 페이지 요청을 통해 사용자는 응답에서 볼 수 있거나 볼 수없는 것을 판별 할 수 있습니다.

+0

감사합니다. 나는 그것이 두려웠다. 아마도 후속 작업을 별도의 질문으로 게시해야하지만 사용자 별 정적 개체 서버 측을 저장하는 방법이 있으므로 적어도 SQL 연결을 열 필요가 없으며이 영구 서버를 쿼리하면됩니다. 측면 개체? – jmease

+0

@jmease : 물론 몇 가지 방법이 있습니다. 가장 일반적인 방법은'Session' 객체에 데이터를 저장하는 것입니다 : http://msdn.microsoft.com/en-us/library/system.web.httpcontext.session.aspx 사전처럼 사용할 수 있습니다 ...' 세션 [ "someKey"] = someValue; ' – David

+0

다시 한번 감사드립니다. 나는 세션을 고려했지만 몇 가지 우려가있다. 세션은 사용자가 강제로 다시 로그인하게하는 여러 가지 이유로 끝날 수 있습니다. 이상적으로, 사용자는 한 번 로그인하고 정기적으로 사이트를 계속 방문하면 로그인 상태를 유지합니다. 제 최선의 방법은 Page_Load에 값이 할당 된 클래스 또는 클래스에 사전 또는 일반 목록을 만드는 것입니다 (그렇지 않은 경우 포스트 백) 그래서 대부분이 페이지 당 한 번이 정보를 쿼리하고 있습니다. 데스크톱 사용자는 모바일 사용자를 염려 할 만하다. – jmease

관련 문제