문제

다양한 방법이 있을 유지하는 사용자를 사용하여 상태에서 웹 개발.

이러한 것들이 생각할 수 있고 오른쪽 지금:

  1. Query String

  2. 쿠키

  3. 양식 방법은(Get 및 Post)

  4. Viewstate(ASP.NET 만 난)

  5. 세션(InProc Web server)

  6. 세션(전용 웹 서버)

  7. 세션(데이터베이스)

  8. 현지 지속성(구글 기어)(감사합니다 스티브 모이) etc.

내가 알고 있는 각각의 방법은 자신의 장단점을 다음과 같은 쿠키지 않고 안전하고 쿼리 문자열의 길이를 갖는 제한되고 못생긴 일반을 봐!;)

하지만,디자인할 때 웹 응용 프로그램을 난 항상으로 혼란을 어떤 방법을 사용하는 것에 대해 응용 프로그램 또는 어떤 방법을 방지 할 수 있습니다.

내가 무엇을 알고 싶은 어떤 방법(s)당신은 일반적으로 사용하지 않거나 더 흥미롭게도 이러한 방법을 피하고 싶은 특정 시나리오에서 그리고 왜?

도움이 되었습니까?

해결책

이것은 매우 복잡한 질문에 대한 답변이 아니라,나는 몇 가지 간단-물린 것을 생각에 대해 고려할 경우 구현하는 상태입니다.

  • Query 문자열 상태에 대해서만 유용 가장 기본적인 작업을--예를 들어,위치를 유지하면 사용자의 내 마법사,아마도 또는 제공한 경로 리디렉션하는 사용자를 한 후 그들은 완료된 작업(예를들면,로그인).그렇지 않으면,쿼리에는 문자열 상태가 끔찍하게 안전하지 않으므로,구현하기 어려운,그리고 그렇게하기 위해서 정의를,그것이 필요에 묶여 일부를 서버측 상태계를 포함하는 키를 묶어는 클라이언트는 서버의 상태를 유지하는 클라이언트입니다.
  • 쿠키 국은 더 많거나 적은 동일한-그것은 단지 애호가 이상 query string 상태입니다.하지만 그것은 아직 완전히 유지된 클라이언트 측에서 한 데이터를 쿠키에 키를 묶어 클라이언트가 어떤 서버측 상태 기계입니다.
  • 폼 방식 상태가 다시 비슷한-그것은 유용 숨어있는 필드를 타이 주어진 형태로 몇몇의 비트 데이터에 다시 끝에(예를 들어,"이는 사용자가 편집 기록#512,그래서 양식에 포함된 숨겨진 입력 값으로 512").그것은 유용하지 않은 다른 많은 것,그리고 다시,또 다른 구현의 동일한 아이디어 뒤에 query string 고 쿠키는 상태입니다.
  • 세션 상태를(어떤 방법을 설명하는)모든 좋은,때문에 그들은 무한하게 확장 가능하고 처리할 수 있 아무것도 선택하신 프로그래밍 언어에 처리 할 수 있습니다.첫 번째 주의가 필요할 수있는 키 클라이언트의 손을 묶어는 클라이언트의 상태로 저장되는 서버에서;는 곳이 대부분의 웹 프레임워크를 제공하거나 쿠키를 기반 또는 query string-based 키를 다시 클라이언트입니다.(거의 모든 현대적인 중 하나 쿠키를 사용하지만,폭포 뒤에 쿼리 문자열을 경우 쿠키가 사용되지 않습니다.) 두 번째 경고는 당신이 필요하 넣어 일부에 불구하는 방법을 저장하는 귀하의 상태...니다 당신이 그것을 데이터베이스에서?귀하의 웹 프레임워크 처리로 완전히 당신?다시,가장 현대적인 웹 프레임워크을 밖으로 작업의,그리고 나를 위해 이동을 구현하는 방법에 대한 나의 자신의 상태 시스템이 필요해요 좋은 이유...그렇지 않으면 나는 가능성이 높 보안 허점을 만들 기능과 파손의 해시아웃 시간에 성숙한 프레임워크.

그래서 내가 정말 있을 수 없습니다 상상하고 싶지 않을 사용 세션 기반의 상태에 대한 아무것도 하지만 가장 사소한 이유입니다.

다른 팁

보안에 대한 문제점;값을 쿼리에서 문자열이나 형성할 수 있습니다 손쉽게 사용자에 의해 변경.사용자 인증을 저장해야 하는 중에서 암호화 또는 탬퍼 분명한 쿠키 또는 서버에서 측면 세션이 있습니다.의 추적을 유지 전달되는 값에서 양식으로 사용자를 완료 프로세스,같은 사이트에 등록 것이 아니라,아마 수 있습 유지에 숨겨진 형태다.

니스(및 때때로 위험한)일하지만,쿼리에 대한 문자열은 상태 선택할 수 있는 사람 링크를 클릭.위에서 언급한 바와 같이,이은 위험한 경우에는 사용자에게 어떤 권한 그들다고 말합니다.그것은 좋은,하지만,보여주는 친구가 당신 사이트에서 찾을.

의 사용 증가 Web2.0,내 생각에 있는 중요한 두 가지 방법을 누락에서 당신의 목록:

8AJAX 응용 프로그램-기 때문 페이지 하지 않고 다시 없 페이지 탐색,상태이 문제가 되지 않는다(그러나 지속하는 사용자 데이터를 사용하여 비동기 XML 통).

9 현지 지속 브라우저 기반 응용 프로그램을 유지할 수 있는 자 및 사용자 데이터 상태를 로컬 하드 드라이브의 라이브러리를 사용하여 Google 과 같은 기어.

으로는 하나입니다 최고의,나는 생각한 그들은 모두 그들의 장소,하지만 Query String 방법은 문제에 대한 검색 엔진입니다.

개인적으로,이는 거의 모든 나 웹 개발 PHP 에서 사용 PHP 의 세션을 처리기입니다.

세션은 대부분의 유연성,내 경험에 의:그들은 일반적으로 보다 빠른 db 접근,그리고 쿠키를 생성하 죽을 때 브라우저를 닫습니다(기본값).

피 InProc 계획인 경우에는 귀하의 웹사이트를 호스트에서 저렴한-n-명랑스 같은 webhost4life.나는 하드 방법을 배웠기 때문에 그들의 시스템을 통해 가입한,그들은 재활용 응용 프로그램 자주하는 원인의 세션을 얻을 잃었습니다.습니다.

그들의 제안을 사용하는 것입 StateServer 는 벌금을 제외하고 당신은 serialise/deserialise 세션 eash 게시다.I love 체 및 웹 앱은 그들의 가득 차있다.에 대해 염려하고 성능으로 전환할 때 StateServer.내가 필요한 리팩터링을 넣는건 정말 필요합니다.

좋겠는 것을 알고 시작하기 전에...

환호,Rob.

무엇을 조심해야 상태를 저장하는 클라이언트 측면(쿼리,문자열 형태 분야,쿠키).아무거나 보안과 관련된 저장되지 않아야 합 클라이언트 측를 제외하고,어쩌면 세션 식별자는 경우 그것은 합리적으로 가려고 추측하기 어렵다.너무 많은 웹사이트에 같은 설정"인증=true"와 스토어에서 사람들의 쿠키 또는 쿼리 문자열이나 숨겨진 형태다.그것은 간단한 사용자를 무시한다.을 기억하는 모든 입력에서 나오는 클라이언트가 목적을 달성할 수 있었을 훼손하고 신뢰할 수 없습니다.

서명은 쿠키 에 연결하는 몇 가지 종류의 데이터베이스에 저장할 때 당신을 잡기 위해 필요한 데이터이다.아무 이유도 없을 것에 데이터를 저장하는 클라이언트 측의 경우 다시 연결-end;당신은 단지 문제를 찾고 있다면 이것은 공개 웹 사이트입니다.

그것은 몇 가지 많은 질문이 무엇을 사용하를 방지하기 위해 무엇을,하지만 이는 사용하는 경우.각각에는 특정 상황 때 그것은 최고의,그리고 다른 상황을 때 그것은 최악이다.

결정하는 요인은 일반적으로 평생의 데이터입니다.세션 상태의 생활을 보다 더 형태 필드니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top