2011-04-22 4 views
1

저는 PHP 보안을 처음 접했고 사이트에 로그인하고 로그인했으며 md5 암호를 추가하려고합니다. 그러나 어디에서나 찾을 수 없습니다. 로그인에 추가해야 할 항목과 로그인 파일 및/또는 데이터베이스에 추가해야하는 항목에 대한 명확한 지침을 제공합니다. 웹 보안 측면에서 새로운 PHP에 익숙해졌습니다. 난 그냥 예 또는 나는 그것이 제대로 작동 얻기 위해 무엇을해야하는지의 좋은 가이드가 필요암호를 해시하려고 시도했지만 성공하지 못했습니다.

$error = $user = $pass = ""; 
if (isset($_SESSION['user'])) destroySession(); 

if (isset($_POST['user'])) 
{ 
    $user = sanitizeString($_POST['user']); 
    $pass = sanitizeString($_POST['pass']); 


    if ($user == "" || $pass == "") 
    { 
     $error = "Not all fields were entered<br /><br />"; 
    } 
    else 
    { 
     $query = "SELECT * FROM members WHERE user='$user'"; 

     if (mysql_num_rows(queryMysql($query))) 
     { 
      $error = "Username already taken<br /><br />"; 
     } 
     else 
     { 
      $query = "INSERT INTO members VALUES('$user', '$pass')"; 
      queryMysql($query); 
      die("<h4>Account created</h4>Please Log in."); 
     } 

    } 
} 

: 약간의 도움을 필요로, 여기에 내가 내 가입 양식에 가지고있는 부분입니다.

+0

을, 난 그냥 SHA-1 암호를 해시하고 충분 이것은 일어날 것 같지 않습니다. – gd1

+0

제 생각에 당신은 준비된 진술과 교리와 같은 "높은 추상화"솔루션에 대해 정말로 읽어야한다고 생각합니다. – hamczu

+1

@Giacomo : 아니요. 합리적인 시간 (시간 또는 일) 동안 클라우드에서 SHA1을 크랙 할 수 있습니다. 암호는 항상 제대로 소금에 절인되어야하며 sha512와 같은 강력한 해시 함수로 해시되어야합니다. – hamczu

답변

4

당신은 소금을 피우고 암호를 해시하는 것을 생각합니다. MD5를 사용하여 해싱하기 전에 비밀번호의 앞면에 원하는 문자열을 추가하십시오 (그리고 원하는 경우 끝까지).

$pass = 'mypassword'; 
$salt = 'S%gh3578'; //anything you want 
$pepper = 'w890rrk'; //anything you want 
$query = "INSERT INTO members VALUES('$user', md5('".$salt.$pass.$pepper."'))"; 
queryMysql($query); 

는 무염 MD5 암호화를 사용하여 일반적인 암호의 조회 테이블을 사용하여 되돌릴 수 없습니다 소금에 절인 MD5 암호화를 사용하여 데이터베이스에 암호를 저장합니다.

암호가 유효한 경우, 당신은 비슷한 할 확인하려면 : NSA 내 사용자 데이터베이스에 눈을두고하지 않는 한 내가 더 염장을하지 않는다

$passToCheck = 'something'; 
$correctMD5 = (retrieve hash from db) 
if($salt.$passToCheck.$pepper == $correctMD5) 
{  
    //valid login 
} else { 
    //login failure 
} 
+0

건배 남자, 치료를, –

-1

삽입하기 전에 md5 ($ pass)를 입력하고 사용자가 로그인하면 md5를 다시 실행하여 값이 동일한 지 확인할 수 있습니다. de-md5 방법은 없으므로 대개 md5 입력을 md5 DB 값과 비교하여 확인합니다.

+1

나는 보안상의 초과가 쓸모 없다는 데 동의하지만 상황은 그렇지 않습니다. md5는 사용자가 공통 암호를 선택한다고 가정하면 DB를 훔치면 md5 해시로 널리 사용되는 암호 목록을 확인하고 결국 사용자가 사용하는 암호가 무엇인지 알 수 있습니다 다른 웹 서비스 용. 하지만, 이것은 매일 발생하지 않습니다. 그러나 그것에 대해 생각해보십시오. – gd1

+0

내가 여기서 말한 것은 사실입니다. 게시 된 (로그인시) 비밀번호의 md5를 데이터베이스의 md5와 대조해야합니다. de-md5에는 (프로그래밍 방식으로) 방법이 없습니다! 일부 웹 사이트에서 인기있는 md5를 조회 할 수 있지만 내 의견과 관련이 없다는 것을 알고 있습니다. 그는 진행하는 법을 묻고있었습니다 ... – Jesper

+0

당신은 너무 쉽게 만들었습니다. 나는 너무 많은 보안이 다소 번거롭고 쓸모 없다고 확신하지만, md5 ($ pass) = SAFE라는 인식을 그에게 부여 할 수는 없다. – gd1

관련 문제