2013-10-17 2 views
0

그래서 세션을 관리하면서 보안에서 배운 것은 생성 된 세션 ID를 클라이언트 쿠키 및 나머지 데이터에 저장하여 서버에 저장하는 것이 가장 좋습니다. $ _SESSION이 정확히 무슨 일입니까? 공식 PHP 문서에서는 아무 것도 말하지 않고있는 설명 만 발견했습니다.

세션 테이블을 서버의 데이터베이스에 생성해야합니까, 아니면 $ _SESSION이 일부 임시 테이블을 생성하고 거기에 필요한 모든 데이터를 저장합니까? 문제는 약과 함께 신뢰할 수있는 시스템을 구축해야한다는 것입니다. 1000 명의 사용자가 동시에 서버에 로그온 했으므로 $ _SESSION이 모든 작업을 "수행하게"하는 것이 얼마나 좋은지 잘 모릅니다.

$ _SESSION은 (는) ID를 어떻게 생성합니까? IP와 브라우저의 조합을위한 하나의 ID입니까? 쿠키를 사용하는 것을 허락 할 필요가 없다는 것을 의미합니다. 대신에 (서버)는 IP와 브라우저를위한 ID를 저장합니다. 이것은 클라이언트가 세션이나 어떤 데이터도 가지고 있지 않다는 것을 의미합니다. 이것은 그것이 어떻게 될지 생각하는 단지 나의 사고 방식이지만, 나는 그것을하는 법과 적절한 방법이 무엇인지 모르겠다. 그래서 너는 나를 도울 수 있니?

+0

조금 이해하면 도움이 될 것입니다. http://stackoverflow.com/questions/11155403/how 독특한 - sess - 생성 - 독특한 - sess ion-id-in-php –

+0

세션 데이터를 저장하는 기본 메커니즘은'session.save_path'에 의해 지정된 위치와 함께 서버의 _files_에 있습니다. 다른 저장 방법을 사용하고 싶다면 직접 구현해야합니다 - 자세한 내용은'session_set_save_handler' 함수에 대한 설명을보십시오. 그리고 아니요, 세션 ID는 "IP와 브라우저의 조합"이 아닙니다. 추측하기 쉽기 때문입니다. 시스템에서 사용할 수있는 난수 생성기를 사용합니다. – CBroe

답변

1

$_SESSION은 각 세션마다 임의의 ID를 생성하며, ID는 IP 또는 user-agent와 같은 다른 클라이언트 정보에 연결되지 않습니다.

  • PHP는 세션 ID를 포함하여 사용자를위한 쿠키를 생성합니다.

  • $_SESSION 배열은 일련 화되어 서버의 파일에 저장됩니다.

  • 사용자가 PHP 세션 쿠키를 사용하여 연결하면 ID가 검사 된 다음 $ _SESSION 배열을 파일에서 역 직렬화 할 수 있습니다. 보안 관점에서

, 그것은 PHP 그래서 사용자가 다른 사용자의 쿠키 및 세션 데이터를 훔칠 수, IP 또는 사용자 에이전트를 기반으로 사용자의 유효성을 검사하지 않습니다하는 것이 중요합니다. 이 기능을 원하면 쉽게 구현할 수 있으며 세션 배열에 해시 값을 저장하고 세션이 복원 될 때 확인하십시오.

고유 한 세션 구현을 작성할 수도 있습니다. 고유 한 ID를 가진 쿠키를 작성한 다음 언급 한대로 데이터를 데이터베이스에 저장하면됩니다. 나는 개인적으로 내 자신의 UserSession 클래스를 만드는 것을 선호한다. 그것은 나에게 완전한 통제권을 준다.당신은 또한 알고 않았다 당신이이 웹 사이트를 만들려고하고

$_SESSION['logged']=1;//assign this in website 1 as value if logged 
$_SESSION['logged']=1;//assign this in website 2 as value if logged 

가 여전히 시스템 모두에 로그인 할 수 있습니다 할당 그래서 만약

0

세션에 대한 점은 그것의 브라우저에서 클라이언트 측에 저장됩니다 당신은 faceniff라는 안드로이드 앱을 사용하여 facebook 계정을 도용 할 수 있습니다. 동일한 세션 이름과 값을 만들어서 계정 소유자 인 것처럼 위장한 "https"를 가지고 있습니다.

사용자 로그인시 세션 값으로 md5 해시를 지정하고 데이터베이스의 사용자 행에 삽입 한 다음 데이터베이스 E 값은 브라우저 세션 동일하므로 데이터베이스는이

id username password   session_code 
1 imbatman superman  12sd5%sda812312y34356 //note this md5 is only an example 
                //but it looks like that but longer i think 

처럼 보이는 여전히 로그 아웃 i는 데이터베이스 세션을 취소하고 PHP는 여전히 새로운 세션

id username password   session_code 
1 imbatman superman  

하지만 메신저를 파괴하고 내 웹 사이트에서 더 많은 보안을 적용 할 방법을 찾는 것이지만 지금은 침투로부터 보호하기 위해 무엇을하고 있습니까

관련 문제