2012-05-25 2 views
-1

저는 지난 달이 책을 많이 읽었습니다. 여러 가지 다른 것들을 시도해 보았습니다. 많은 의견을 들었습니다.최고의 세션 처리기는 무엇입니까?

이 주제에 대해 완전히 모르는 사이에 PHP에서 사용자 정의 세션 처리기를 작성하고 모든 페이지에서 $ _SESSION에 저장된 다음 조건이 true인지 확인하는 유효성 검사 스크립트를 실행하기 시작했습니다 (모두 해시 됨).) MD5의 :

1) 로그인에 지정된 2) 브라우저 마지막 페이지

에서 마지막으로 사용한 동일 그리고 사용자 정의 세션 시간 제한이 있었다 마지막 페이지에서 사용 된 마지막에 IP가 동일, 예를 들어 5 분 동안 로그인 한 상태로 머물 수있게 해주었습니다. ID를 다시 생성했습니다. 모든 페이지가 표시됩니다.

저는 #php irc 채널에 입력했습니다. 누군가이 모든 것을하기 위해 PHP 사전 정의 함수를 복제하려고 미친 듯이 전화를 걸어서 PHP 변수 (session.max_time 등)) 한계에 도달하면 충분할 것입니다.

설치했지만 일부 서버 (localhost 및 webserv)에서 작동했지만 다른 서버에서는이를 무시한 것 같습니다.

내 선생님이 데이터베이스 세션 유효성 검사를 사용한다고 말했습니다. 한 번 더, irc에있는 사람들은 매번 그 물건을 확인하기위한 연결 만함으로써 페이지가로드 될 때마다 많은 메모리를 낭비하는 것에 미쳤습니다.

어쨌든 나는 옳은 선택이 무엇인지, 따라야 하는지를 정말로 모른다.

조언이 있으십니까?

+0

그냥 달라집니다. 그러나, 귀하의 질문의 첫 번째 부분에서 #irc에서 quys 오른쪽 : 그것은 이미 존재합니다. 일부 서버가 설정을 무시하면 문제가 발생하고 일부 서버는 설정을 무시하며 사용자가 직접 구현해야합니다.) – KingCrunch

+0

MD5가 해시를 암호화하지 않습니다. 뭔가 완전히 다릅니다. 암호화는 되돌릴 수있는 해싱이 아닙니다. –

+0

Daan을 수정했습니다. 메모를 보내 주셔서 감사합니다. KingCrunch 동의합니다.하지만 테스트를 거친 대부분의 서버에서 응용 프로그램을 작동시켜야하는데 실제로 작동하지 않는 것이 이상합니다. –

답변

1

동일하지 않은 IP 주소에 의존하지 마십시오. 그게 당신의 통제 불능입니다.

데이터베이스에 세션을 저장하는 한 가지 이유는 모두 동일한 데이터베이스 서버 (또는 클러스터)를 공유하는 여러 웹 서버를 지원하기 위해서입니다. 이렇게하면 크기를 조정할 수 있습니다. 또한 PHP 세션 설정에 대해 걱정할 필요가 없으므로 많은 타사 응용 프로그램이 지원을 단순화하기 위해이를 사용합니다.

대부분의 경우 기본 쿠키 기반 (서버 기반 파일 기반) 세션이 좋습니다. 인증 직후에 regenerate_session_id()로 세션 고정을 방지하고 SSL을 사용하여 다른 세션 하이재킹 수단을 방지하십시오.

사용자가 로그인해야하는 경우 세션을 정상적으로 사용하지만 토큰을 나타내는 다른 쿠키를 추가합니다.

세션이 MD5로 암호화되었다고 할 때 나는 어떤 의미인지 알 수 없습니다. 어쩌면 당신은 더 설명 할 수 있습니다.

+0

안녕 마커스, 다른 사람이 세션 ID를 냄새 맡을 수 있고 다른 IP를 사용하고 다른 사용자 인 척 할 수 있다는 것을 잊지 마십시오. 토큰이있는 다른 쿠키가 무엇을 의미합니까? 데이터베이스에 저장해야하지 않습니까? 그리고 DB에 저장하면 더 느리지 않습니까? 나는 그들을 해싱했습니다, 미안 해요. md5 ($ last_visit_ip)와 같은 것으로, 모든 페이지를 비교합니다. –

+0

@IvoPereira, SSL을 사용하는 경우 아무도 세션을 스니핑하지 않습니다. 사용자는 각 요청에 대해 동일한 IP 주소를 사용할 수 있다고 보장 할 수 없습니다. 도달 경로 요청은 경로가 다를 수 있으며 IP 주소가 아닌 상태에 쿠키 만 사용해야합니다. 예, 서버 측에서 토큰은 데이터베이스에 저장되고 클라이언트에서는 쿠키에 저장됩니다. 세션이 만료 된 경우에만 사용하기 때문에 어떻게 느려지는지 모르겠습니다. 나는 아직도 당신이 IP 주소를 해시하는 이유를 모르겠다. 그냥 일반 텍스트로 비교할 수 있습니다. –

+0

DB 세션의 이점 및 세션 고정/하이재킹 방지에 대한 유용한 정보. – Ami

0

데이터베이스에서 세션 처리를 구현하는 것이 좋습니다. 이는 대부분의 서버 설정을 보호하는 솔루션이기 때문에 동시에 비교적 간단합니다. PHP의 세션 처리 함수를 사용하지만 디스크 대신 데이터베이스에 저장합니다. 그것을 조금 구글,하지만 난 읽기 제안 http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/

1

1) 마지막 페이지

이 유효 시나리오 실패에 사용 된 마지막에 IP가 동일 - 예를 들어, 로드 균형 조정 된 프록시를 통한 액세스.

2) 마지막 페이지

이 유효 시나리오 실패에 마지막으로 사용 된 동일한 브라우저 - Google 크롬은 즉시, 심지어 중간 세션에 자동으로 업데이트됩니다.

나는 각 페이지도 재생성하고있었습니다.

사용자가 둘 이상의 브라우저 인스턴스를 열면이 문제가 발생합니다. 사용자가 존재하지 않는 Sedison ID를 표시하거나 인증 상태를 변경할 때 세션 ID를 변경해야합니다. 다른 때는 아닙니다.

당신은 이러한 모든 속임수로 성취하려는 것을 말하지 않으므로 올바른 해결책이 무엇인지 조언하는 것은 불가능합니다. 지금까지는 세션 처리기가 아니라 세션 관리 방법에 대해 설명했습니다.

내 교사 나 데이터베이스 세션 검증

이유를 사용했다? 아마 이것은 기본 파일 기반 처리기보다 선호되지만 어떤 단점을 해결하려고합니까?

+0

브라우저 (User-Agent)에 대한 좋은 지적. – Ami

관련 문제