2011-08-02 3 views
3

가능한 중복 : 내가 알고 싶은 무엇
PHP Can a client ever set $_SESSION variables?

, PHP는 $ _SESSION 변수는 클라이언트 측에서 변경할 수 있는지 여부입니다. 예를 들어, 내가 할 경우 $_SESSION['username'] = $username; 누군가가 내 $_SESSION['username'] 변수의 값을 어떻게 든 변경할 수 있습니까?

+2

PHP - 서버 측 스크립트 – Subdigger

답변

4

PHP는 서버 측 프로그래밍 언어이며 PHP에서 $ _SESSION 수퍼 글로벌은 서버에서만 직접 액세스 할 수 있습니다. '정상적인'php 세션을 사용하면 SESSON superglobal에 포함 된 데이터가 브라우저와 서버간에 쿠키로 전달됩니다. 따라서 기술적으로 쿠키를 수정하여 웹 브라우저에서 Javascript로 세션을 수정할 수 있습니다.

하지만이 작업을 수행하려는 시도는 끔찍한 아이디어 일 수 있으며 수행하려는 작업을 수행하는 데 훨씬 간단한 방법 일 가능성이 높습니다.

편집 : 나는 질문이 질문은 당신 Codeigniter/PHP sessions security question

+2

쿠키를 수정하면 세션 superglobal의 값을 변경할 수 없지만 올바른 세션 ID를 추측 한 경우 다른 세션을 사용할 수있다. – Jim

+0

내 관심사는 ** 사용자 **가이 변수를 변경할 수 있는지, 그리고 어떻게 사용자를 보호 할 수 있는지입니다. –

+0

간단하고 간단하지는 않습니다. 나는 그 질문에 답하려고 노력하고있다 : 가능하다. 좋은 생각입니까? No. –

1

정확하게는 아니지만 AJAX로 시뮬레이션 할 수 있습니다. 값을 변경하는 PHP 파일을 작성한 다음 AJAX에서 호출하여 실행하고 값을 변경하십시오.

희망이 도움이됩니다.

+0

오랫동안 사용해 왔기 때문에 저는 이미 익숙합니다. 그러나 내 관심사는 사용자가이 변수를 변경할 수 있는지 여부입니다 ... –

+0

Ok, 나는 이것이 내가 할 수있는 방법이라고 생각한다 ... – elvenbyte

5

에 사용의 세션 자동 전역의 내용은 변경할 수 없습니다 수 있습니다. 이것은 서버에 있으며 클라이언트는이를 액세스 할 수 없습니다.

그러나 세션 ID는 클라이언트에 전달되므로 클라이언트가 서버에 접속할 때 서버는 사용할 세션을 알 수 있습니다. 이 값은 변경 될 수 있습니다 (이 문제를 방지하려면 Calums 대답을 참조하십시오.http://php.net/manual/en/session.security.php 참조). 어떤 사용자가 elses 세션을 사용할 수는 있지만 (세션의 값은 변경하지 않음).

+0

누군가 PHPSESSID를 사용하면 다른 사람이 세션을 도용 할 수 있지만 세션 배열의 내용을 변경할 수는 없습니까? –

+0

@George Correct, 하이재킹 방지를위한 Calums 응답을 참조하십시오. – Jim

+0

@ 짐이 유명한 칼 룸의 대답은 어디에 있습니까? – carla

관련 문제