2012-10-13 2 views
4

내 sql 테이블의 user_id를 세션 ID로 사용하는 것이 안전하지 않습니까? 이것은 정상적으로 PHP 개발자가하는 일입니까? sql 데이터베이스에서 세션 ID 변수 설정; 이거 안전한가요?

http://sockface.com/hellooooo.png

또한 내 init_inc

function fetch_user_info($uid){ 
$uid = (int)$uid; 

$sql = "SELECT 
      `user_id` AS `id`, 
      `username`, 
      `user_firstname` AS `firstname`, 
      `user_lastname` AS `lastname`, 
      `user_about` AS `about`, 
      `user_email` AS `email` 
     FROM `users` 
     WHERE `user_id` = {$uid}"; 

$result = mysql_query($sql);   
return mysql_fetch_assoc($result); 

내가 $ _SESSION이있는 경우 [ 'UID에 사용자 ID

include('profile/core/init_inc.php');  
$_SESSION['uid'] = $user_id; 
header("Location: profile/edit_profile.php"); 

로 세션 ID를 저장하기 위해 수많은 시간을 시도했습니다 '] = 90;

그래서 [email protected] 정보 here이 표시됩니다. 내 질문에, 세션 ID를 user_id로 저장하는 것이 안전하며, 어떻게하려고 할 때, 왜 그렇게하지 않습니까? 일?

답변

2

몇 가지 :

1) 세션 ID는 특정 사용자에 대한 상수 값 안된다. 그것은 보안 위반입니다. 세션 ID는 한 번씩 변경해야합니다. 이상적으로는 임의의 값이어야합니다.

2.) 세션 ID를 설정하는 것처럼 보이지 않습니다. "uid"라는 세션 변수를 설정하고 있습니다.

3) session_start() 번으로 전화 했습니까? 정말 상수 값에 세션 ID를 설정하는 것이 좋습니다 않을 것이라고 사실에도 불구하고


, 당신은 session_id() function 사용하여 세션의 ID를 설정할 수 있습니다

$session_id = "some_random_value"; 
session_id($session_id); 

을하지만,이 말씀처럼 사용자 ID가 아니어야합니다. 당신은 세션 정보로 사용자의 ID를 저장하고, 사용자가 페이지를로드 할 때이 로그인되어 있는지 확인 할 수 있습니다. session documentation에서 PHP 세션에

if (isset($_SESSION["user_id"])) 
{ 
    //user is logged in 
    $user_id = $_SESSION["user_id"]; 
} 
else 
{ 
    //make user log in 
    $user_id = result_of_login(); 
    $_SESSION["user_id"] = $user_id; 
} 

더 많은 정보를.

+0

예 제가 session_start를 설정했습니다! – ramr

+0

왜 보안 위반입니까, 대신 무엇을해야합니까? – ramr

+0

사용자의 세션 ID가 항상 동일하면 악의적 인 사용자가 사용자 세션을 하이재킹하는 것이 더 쉬워야합니다. PHP는 임의의 세션 ID를 생성하므로 아무 것도하지 않아도됩니다. –

관련 문제