2013-02-03 2 views
0

중요한 사용자 정보를 데이터베이스가 아닌 서버에 파일로 저장되는 개체에 저장하고 싶습니다.스토리지에 대한 일련 화 및 암호화

사용자의 암호 또는 다른 키가 암호화 키를 생성하는 데 사용됩니다.

사용자가 로그인하고 올바른 키를 제공 할 때마다 데이터 객체가 서버에서로드되고 세션에 저장됩니다. 이 모든 것은 다른 SSL에서 일어납니다.

필자는 직렬화에 익숙하지 않지만 이런 식으로 작동한다고 생각합니다.

function loadData($id, $key) 
{ 
    //open file from storage 
    $fh = fopen("data/" . $id); 
    $obj = fh->read //not sure what the read function would be.... 
    $obj = decrypt($obj, $key) // some sort of decryption function using openssl_decrpt 
    $obj = unserialize($obj 
    if ($obj != null) //if successful... 
    { 
     session_start(); 
     $_SESSION['data'] = $obj; 

     return true; 
    } 

    return false; 
} 

function saveData($id, $key) 
{ 
    //open file from storage 
    $fh = fopen("data/" . $id); 
    $obj = serialize($_SESSION(["data"]); 
    $obj = encrypt($obj, $key); 
    $obj = serialize($obj 

    if ($obj != null) //if successful... 
    { 
     fh->write($obj) //not sure what the write function would be.... 

     return true; 
    } 

    return false; 
} 

또한이 방법이 안전할까요?

+0

체크 아웃 ESAPI는 저장을 위해 데이터를 암호화 당신을 도움이 될 것입니다) 두 번째 문제를 무시하는 것이 합리적 일 수있다 필요 파일로 – TheZuck

답변

0

약점은 귀하의 서버입니다. 누군가가 서버에 액세스 할 수있는 경우, 그/그녀는 할 수 있습니다

  1. 은 (키가 짧은 암호 인 경우 매우 효과적 일 수있다) 암호화 된 객체에 dictionary attack를 실행합니다.
  2. 요청 처리 중에 서버 프로세스에 연결하고 메모리에서 해독 된 개체 (또는 키)를 가져옵니다.

salt를 사용해야하는 첫 번째 문제를 완화하기 위해,하지만 당신은 당신의 서버가 손상되지 않았는지 확인 번째 problem- 대해 할 수있는 많은 ...

(즉, 실행 참고가 전혀 없습니다 사전 공격은 프로세스를 리버스 엔지니어링보다 훨씬 간단하고 적은 권한을. 그래서, 당신의 사용 사례에 따라,