2011-05-13 3 views
1

Opera Dragonfly가 세션 정보뿐만 아니라 쿠키도 캐시 할 수있는 것처럼 보입니다. 특히 PHPSSID 내 질문입니다. 디버거/개발자 도구를 사용하여 PHPSSID가 표시되지 않도록 숨길 수 있습니까?디버거에서 세션 ID를 볼 수 없게하는 방법은 무엇입니까?

나는 쿠키가 안전하기 때문에 쿠키를 신경 쓰지 않습니다. 그들에있는 데이터가 이중 소금뿐만 아니라 몇 가지 다른 것들로 해싱되어 있으므로 위조하기 때문에 문제가되지 않습니다.

하지만 PHP 세션이 표시되지 않도록하고 싶습니다. 어떻게이 일을 성취 할 수 있습니까?

+1

나는 할 수 있다고 믿지 않는다. 최선의 방법은 캐시 된 세션을 사용하여 사이트의 모든 내용을 수정할 수 없도록하는 것입니다. (예 : 사용자가 로그인 상태를 유지할 수 있지만 설정을 변경하는 작업을 수행하려면 암호가 필요합니다.) – drudge

+0

사용자 데이터를 변경 한 후에 세션을 다시 생성 할 예정입니다 (예 : 암호 변경, 전자 메일 변경). 이전 세션을 종료하고 새 세션을 만듭니다. –

답변

0

짧은 대답은 입니다. 세션 ID의 작업이 아닙니다.

세션 ID의 포인트는 매우 임의 번호이며, 종종 cryptographic nonce이라고합니다. 이 값은 추측하기가 매우 어려우므로 서버 측에서 해당 세션에 대한 상태를 참조하는 데 사용됩니다. 데이터베이스에있을 수도 있고 기본적으로 PHP는 /tmp/THE_SESSION_ID 파일을 사용합니다. $_SESSION에 저장된 데이터는이 파일에 저장되며 사용자는이 데이터를 얻을 수 없습니다.

PHP에서 공격자가 사용자의 세션 ID를 훔치지 않게하려면 php.inisession.cookie_secure=On을 설정해야합니다. 그러면 HTTPS를 통해 세션이 강제 실행됩니다.

HTTPS를 사용하는 경우 세션 ID가 해당 네트워크의 공격자로부터 가려집니다. HTTPS 세션 ID를 사용하면 Wireshark 또는 Firesheep과 같은 도구로 도킹 할 수 없습니다. HTTPS를 사용하지 않으면 OWASP A9: Insufficient Transport Layer Protection을 위반합니다. 그러나 사용자는 자신의 쿠키 javascript:document.cookie을 보거나 TamperData를 사용하여 자신의 세션 ID를 볼 수 있습니다.

+0

하지만 HTTPS를 사용하려면 먼저 유효한 인증서가 필요하지 않습니까? 슬프게도 중요한 데이터를 전달하지 않기 때문에 돈을 내고 싶지 않은 돈이 든다. –

+0

중요한 데이터를 전달하지 않는다면 왜 세션 ID에 관심이 많을 까? 우리는 단지 세션 ID에 정규 HTTP를 사용합니다. 그리고 언급했듯이 세션 키는 사용자를 세션에 연결하기 만하면됩니다. 리치가 다른 답변에서 말했듯이, 세션 ID는 사용자 컴퓨터의 쿠키 일 뿐이며, 사용자가 세션을 보거나 자신의 값을 설정하지 못하게 할 수있는 방법은 없습니다. – Kibbee

+0

@Kibbee 및 PT Desu 인증 자격 증명 (세션 ID)은 중요한 정보입니다. 어떤 보안 시스템에서도 공격자가 누구인지 분명히해야합니다. 자신의 세션 ID를 보는 사용자는 분명히 공격이 아니지만이 세션 ID를 얻은 다른 사람은 공격자가 응용 프로그램에 대한 액세스 권한을 부여 할 수있는 매우 심각한 owasp 위반입니다. – rook

관련 문제