2012-07-28 3 views
5

내 사이트는 공격자가 사용자 계정에 액세스하려고 시도하는 무차별 대입 공격을받습니다. 봇에는 사용자 에이전트가 없습니다. 10 분 이내에 계정 당 3 회의 시도를 초과하면 로그인을 차단하는 시스템이 있습니다.세션이 브라우저에만 저장되어 있습니까?

또한 사용자 에이전트를 확인하고 종료하지 않은 경우 종료합니다.

제 질문은 : 세션이 브라우저에만 저장되어 있습니까? 제가 생각하기에 그들은 명령 행을 통해 실행되는 스크립트를 사용하고 있습니다.

나뿐만 아니라이 구현했습니다 : 나는이 공격을 방지하기 위해 할 수있는 뭔가가

if(!isset($_COOKIE[ini_get('session.name')])) { 
header("HTTP/1.0 404 Not Found"); 
exit; 
} 

있습니까?

+2

세션은 (일반적으로) 쿠키가있는 사용자와 연결된 서버 측 저장소입니다. – nickb

+0

Google for : PHP 세션 하이재킹 – Yang

답변

14

세션 변수의 내용은 서버에 저장되지만 클라이언트에 저장되고 각 요청과 함께 전송되는 세션 ID로 식별됩니다. 일반적으로 세션 ID는 쿠키에 저장되지만 URL에 추가 할 수도 있습니다.

위키의 session hijacking에 흥미로운 내용이 있으며 PHP Security Consortium에있는 내용 중 하이재킹에 대한 이해를 돕고이를 방지하는 방법에 대해 설명합니다.

는 이러한 공격을 방지하는 방법을 많이, 나는 세 가지를 지적했습니다되어 있습니다 :

  • 사용 PHP의 session_regenerate_id() 사용자가 성공적으로 로그인 한 후 를이는 다른 새로운 세션 ID를 만듭니다. 하나는 물론 세션이 시작된 경우 그들이 공공/안전 영역을 처음 방문했을 때 만들어진 것입니다.
  • 성공적으로 로그인하면 사용자의 IP 주소, 세션 ID 및 사용자 에이전트를 기록하십시오. 모든 요청에 ​​대해 IP 및 사용자 에이전트를 확인하고 IP 및 에이전트가이 세션과 일치하지 않으면 다시 로그인하십시오. 하지만 때로는 사용자의 IP가 바뀌어 누군가를 괴롭힐 수도 있습니다. 또한 사용자 에이전트가 쉽게 스푸핑 될 수 있음을 알아 두십시오.
  • 요청에서 보낸 정보를 숨기려면 SSL/TCL을 사용하십시오.
관련 문제