2009-12-11 5 views
0

설정된 시간 동안 유휴 상태가 된 후에 세션을 종료하는 몇 가지 사이트 (예 : 은행 및 학교)를 알고 있습니다. 세션 활동은 링크를 따르는 사용자 또는 아약스를 통해 양식을 업데이트하는 것과 같은 어떤 종류의 활성 상호 작용에서 최소한 결정됩니다. 기본적으로 서버는 세션 중에 무언가를 할 수있는 요청을 받고 앞으로 나아가서 세션 시간을 15 분 연장합니다.보안 질문 : 세션을 유지하기 위해 아약스 및 이벤트 사용

그러나 어떤 경우에는 텍스트 상자를 채우거나 길을 따라 길게 지시 사항을 읽는 중일 때 많은 시간과 정보를 잃어 버렸습니다.

그렇다면 키보드 활동과 마우스 움직임을 수신하는 아약스 스크립트를 사용하지 마십시오. 제출 버튼을 클릭하거나 링크를 따르지 않아도 사용자가 계속 활성 상태임을 알 수 있습니까?

나는 이미이 작업을 수행하고있는 존경할만한 사이트를 아는 사람이 있는지, 아니면이 아이디어에 대한 주요 보안 위험 요소가 간과되어 있는지 궁금합니다.

내가 위험 할 것이라고 생각할 수있는 유일한 것은 고양이의 무작위적인 행동, 주변의 전자 기기 진동 또는 하이퍼 아동입니다.

위의 모든 경우에서 사용자는 집에서 가장 가능성이 높으며 악의적 인 시도가없는 한 창을 최소화했을 가능성이 있으므로 이벤트로 트리거 할 가능성이 거의 없습니다.

다른 주요 위험 요소가 있습니까?

답변

2

일반적인 AJAX 사이트는 어쨌든 서버에 다시 게시물을 보내고 있습니다. 이 이벤트는 이미 사용자 세션을 갱신하고 있습니다.

키보드 나 마우스 클릭에 이러한 이벤트를 넣으면 몇 번이나 서버에 게시 할 예정입니까? 지금처럼 양식 필드에 입력하는 경우, 입력 한 각 문자에 대해 서버에 잠재적으로 핑이 발생할 수 있음을 의미합니다. 매우 효율적인 해결책은 아닙니다. 다른 한편으로는 사용자가 독서에 앉아 있거나 외부 텍스트 편집기를 사용하여 텍스트를 입력 한 후 나중에 양식에 복사하면 어떻게됩니까?

친숙한 UI를 제공하는보다 일반적인 해결책으로 세션 만료로 인해 긴 게시물이 삭제되지 않도록 자동 저장 기능을 사용하는 것이 좋습니다. Google 문서 도구가이를 수행합니다. 몇 초/분마다 사용자가 실제로 저장/제출을 클릭하지 않고 편집기의 내용을 다시 서버에 게시합니다. 다른 옵션은 사용자에게 세션이 만료 될 예정임을 알리는 것입니다 (자바 스크립트 시간 제한을 사용하여 완료 할 수 있음). 세션을 갱신하기 위해 서버를 ping 할 수있는 링크를 제공하십시오.

귀하의 솔루션은 사용자 문제에 의존하고 있습니다. 첫 번째 경우에는 페이지를 탐색하고 두 번째로 마우스를 클릭하십시오.

1

필자는 사용자가 에세이 내용과 짧은 데이터 블록을 입력해야하는 온라인 콘테스트를 많이했던 회사에서 일해 왔습니다. 우리는 "긴 - 바람"페이지를 쳤을 때 사용자 세션에 대해 "session.setMaxInactiveInterval()"세션 시간을 수정하여 편집 할 시간이 더 많았으며, 그 다음에 우리는 제출하십시오.

나중에 그 회사와 내가 일한 몇 명의 다른 사람들이 당신이 묘사하고있는 것과 비슷한 해결책을 제안했지만 여러 가지 이유 때문에 결코 받아 들여지지 않았습니다. 결코 나쁜 생각으로 생각되지 않았습니다. 우리가 선택한 것은 아닙니다. 기본적으로 타이머에 대한 아약스 호출이기 때문에 세션이 만료되기 직전에 가벼운 아약스 "ping"을 실행하고 해당 페이지가 열려있는 한 세션을 활성 상태로 유지합니다.나는 "현실 세계"에서 그것을 구현할 기회를 결코 얻지 못했을 것이다. 그래서 내가 생각하지 못한 네거티브가있을 것이다.

행운을 빈다.

+0

이것은 매우 오래된 것이지만 이것이 최선의 해결책이라고 생각합니다. 웹 사이트를 실행하는 자바 스크립트 간격 타이머를 사용하여 일상적으로 * ping * 서버가 살아있는 세션을 유지하는 브라우저가 열립니다. 이 설치 프로그램을 1 년 넘게 배포했으며이 작업을 수행하는 데 문제가 발생했습니다. – SpencerD

관련 문제