php
  • sql
  • 2013-09-23 2 views 1 likes 
    1

    저는 PHP로 아직 새롭고 잘못된 점을 이해할 수 없습니다. 나는 PHP 스크립트를 가지고 있으며 로그인 스크립트로 사용하고 있습니다. (아직 배운 이래로 간단한 기능입니다.) 폼의 입력 값이 mysql 데이터베이스의 값과 일치하도록했습니다. 설정sql이 해시와 함께 작동하지 않습니다.

    "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='81dc9bdb52d04dc20036'" 
    

    변수 : 나는 그것이 작동 아래와 위의 코드를 변경하면

    "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='$password_hash'" 
    

    (차이가 나는 수동으로 MD5 해시를 삽입이다) : 코드는 아래의 문제를 일으키는 SQL입니다 다음과 같습니다 :

    $login_button = $_POST['login_button'];    
    $username = $_POST['username']; 
    $password = $_POST['password'];     
    $password_hash = md5($_POST['password']); 
    

    아무도 친절하게 여기에서 내가 틀렸다고 설명 할 수 있습니까?

    답변

    2

    당신이 password_hash()

    둘째와 같은보다 안전한 암호 해시 메커니즘을 찾아야한다,

    "SELECT `id` FROM `golden_acres_username` 
    WHERE `uname`='".$username."' AND `password`='".$password_hash."'" 
    
    +0

    매력처럼 작동 :) 코드에 어떤 영향이 있습니까? – joebegborg07

    1

    의 첫 번째 시도, 당신은 어떤 준비를 매개 변수화 사용하여 입력을 탈출하지되어 현재로서 중요한 SQL 주입 취약점을 가지고 진술.

    적어도이 두 가지 사항 중 후자를 수행 할 때까지는 솔루션을 논의 할 가치가 없습니다.

    +0

    나는 PHP를 배우는 중이므로 가까운 장래에 보안 업무를 수행 할 것이라고 확신한다. – joebegborg07

    +0

    @ joebegborg07 방금 배우는 것이 좋습니다. SQL 삽입을 막기 위해 데이터베이스를 쿼리하는 올바른 방법을 배우는 것이 좋습니다. 이는 데이터베이스 작업을 할 때 고려해야 할 가장 중요한 고려 사항 중 하나입니다. –

    관련 문제