2011-08-05 8 views
8

는 세션 변수가 true로 = 자신의 $ _SESSION [ 'autheticated'] 수 있도록 저장되는 위치세션 보안?

If ($_SESSION['authenticated'] == true) { 
    /////Show secure page 
} 

사람이 그냥 가서 변경할 수 사용하는 것이 안전합니까?

$ _SESSION [ 'id'] =을 (를) 가진 사용자가 색인 ID와 동일한 것입니다. 어떻게이 증권 회사를 만들 수 있습니까? 누군가가 가서 id 값을 변경하고 다른 사용자로 가장 할 수 있습니까?

아래의 방법이 보안에 도움이되는 올바른 방법일까요?

$_SESSION['random_check'] = (random number) 

또한 나는 대부분의 호스팅에 확신 세션을 해요

+0

나는 이름의 해시 또한 업데이트 (로그인 날짜와 함께 booleans' 내 모든 프로젝트'이 방법을 사용 process.php에서

<?php class token { public function generateToken() { return $_SESSION['token'] = md5(microtime()); } function generateField($name = "token"){ return "<input type='hidden' value='{$_SESSION['token']}' name='{$name}'>"; } public function getToken() { return $_SESSION['token']; } public function getTokenFromFields($method = "GET") { return strtoupper($method) == "GET" ? $_GET['token'] : $_POST['token']; } public function checkToken() { return $this -> getToken() == $this -> getTokenFromFields(); } public function updateToken() { $_SESSION['token'] = md5(microtime()); } } ?> <?php //orther file require 'class.token.php'; $token = new token(); $Atoken = $token -> generateToken(); echo "<script> var data = {}; data['token'] = '{$Atoken}'; data['foo'] = 'baa'; </script>"; $token -> generateField(); ?> <script> $.ajax({type:"GET", url:"process.php", "data=foo=baa&token=" + data.token, success:function(response) { } }) </script> 

db + 세션에서 개최), 다음 체크가 유효하게 비교하고 다시 업데이 트되었습니다 공유 호스팅에 메신저 경우에만 저장 경로를 변경하면 & .htaccess 폴더 –

답변

3

If ($_SESSION['authenticated'] == true && $_SESSION['random_check'] == random_number) { 
/////Then show secure page 
} 

덕분에, 단지 인터페이스입니다 것입니다 내 데이터베이스의 열 때마다이를 저장하여 파일 시스템, 즉 모든 세션 데이터는 서버의 하드 디스크에 저장됩니다. phpinfo() 출력을 보면 세션 데이터의 실제 경로가 어디인지 볼 수 있습니다.

당신이 세션 경로를 777로 chmod하지 않고 침입자가 어디에서 앱을 호스팅하고 로그인했는지 알지 못한다면 문제가별로 없다고 생각합니다.

큰 문제는 공격자가 합법적 인 사용자를 가장하는 데 사용할 수있는 서버와 클라이언트를 통해 앞뒤로 왕래하는 정보 조각이므로 쿠키를 보호하는 것입니다.

1

예, 안전하게 사용합니까? 나는 이것을 사용한다. -check login, 유효한 로그인 인 경우 $ _SESSION [ 'logged'] = 'yes'를 설정하고 음 토큰을 생성하십시오. $ _SESSION [ 'token'] = '토큰' 이 토큰은 저장합니다. 입력 HTML 요소에서 각 작업을 체크인하십시오. 뭔가 같은 :

<?php 
if($_SESSION['token'] == $_GET['token']) { 
//do something 
} else die('bad token'); 
?>