安全でないmd5md5を使用して認証用のユーザー名とパスワードを取得する方法

user3226149

パスワードをmd5として保存しようとしています。これを使用してこのパスワードを保存したいのは、これがログイン用のアプリケーションに必要なものだからです。さて、ログインで認証するためのユーザー名とパスワードを取得するにはどうすればよいですか?このmd5は暗号化されていないため、復号化できないことがわかっているため、パスワードの取得方法がわかりません。これを行う方法を教えてください。

これは私のコードです:

public function storeUser($username, $password, $fname, $lname, $gender,  $address,  $contact, $age, $birthday) {
    //
        $uuid = uniqid('', true);
        //$hash = $this->hashSSHA($password);
        //$encrypted_password = $hash["encrypted"]; // encrypted password
        $password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : NULL;
        $salt = $hash["salt"]; // salt
        $result = mysql_query("INSERT INTO patient_user(unique_id, username, encrypted_password, fname, lname, gender, address,contact, age, birthday, salt, created_at) VALUES('$uuid', '$username', '$password', '$fname', '$lname', '$gender','$address','$contact','$age','$birthday','$salt', NOW())");
        $result1 = mysql_query("INSERT INTO users(Id, username, password, salt) VALUES('$uid', '$username', '$password', '$salt')");
        /*$sql = "insert into users(Id, username, password, salt)
                                values ('".$uid."','".$username."', '".$encrypted_password."', '".$salt."')";   
        $result1 = $db->query($sql);
        */
        // check for successful store
        if ($result) {
            // get user details 
            $uid = mysql_insert_id(); // last inserted id
            $result = mysql_query("SELECT * FROM patient_user WHERE uid = $uid");
            // return user details
            return mysql_fetch_array($result);

        } else {
            return false;
        }

    }


    /**
     * Get user by username and password
     */
    function getUserByusernameAndPassword($username, $password) {

       $result = mysql_query("SELECT * FROM patient_user WHERE username = '$username' and encrypted_password = '$password'") or die(mysql_error());
        //$result = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error());
/*
       // check for result 
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            $result = mysql_fetch_array($result);
           // $salt = $result['salt'];
            $password = $result['encrypted_password'];
           // $hash = $this->checkhashSSHA($salt, $password);
            // check for password equality
            if ($password == $hash) {
                // user authentication details are correct
                return $result;
            }
        } else {
            // user not found
            return false;
        }
        */
    }

編集

以下のコードのため、私はmd5を使用しています。このコードは、サイトからコピーした私のオリジナルの作品ではなく、いくつかの変更を試みているだけです。渡されるパスワードが異なるため、テーブルusersのIPとポートの行を実際に更新することはできません。

<?php
/****************************************
*       Server of Android IM Application
*
*       Author: ahmet oguz mermerkaya
*       Email: [email protected]
*       Editor: Dominik Pirngruber
*       Email: [email protected]
*       Date: Jun, 25, 2013     
*   
*       Supported actions: 
*           1.  authenticateUser
*               if user is authentiated return friend list
*           
*           2.  signUpUser
*       
*           3.  addNewFriend
*       
*           4.  responseOfFriendReqs
*
*           5.  testWebAPI
*************************************/


//TODO:  show error off

require_once("mysql.class.php");

$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "healthhelp";


$db = new MySQL($dbHost,$dbUsername,$dbPassword,$dbName);

// if operation is failed by unknown reason
define("FAILED", 0);

define("SUCCESSFUL", 1);
// when  signing up, if username is already taken, return this error
define("SIGN_UP_USERNAME_CRASHED", 2);  
// when add new friend request, if friend is not found, return this error 
define("ADD_NEW_USERNAME_NOT_FOUND", 2);

// TIME_INTERVAL_FOR_USER_STATUS: if last authentication time of user is older 
// than NOW - TIME_INTERVAL_FOR_USER_STATUS, then user is considered offline
define("TIME_INTERVAL_FOR_USER_STATUS", 60);

define("USER_APPROVED", 1);
define("USER_UNAPPROVED", 0);


$username = (isset($_REQUEST['username']) && count($_REQUEST['username']) > 0) 
                            ? $_REQUEST['username'] 
                            : NULL;
$password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : NULL;
$port = isset($_REQUEST['port']) ? $_REQUEST['port'] : NULL;

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : NULL;
if ($action == "testWebAPI")
{
    if ($db->testconnection()){
    echo SUCCESSFUL;
    exit;
    }else{
    echo FAILED;
    exit;
    }
}

if ($username == NULL || $password == NULL)  
{
    echo FAILED;
    exit;
}

$out = NULL;

error_log($action."\r\n", 3, "error.log");
switch($action) 
{

    case "authenticateUser":


        if ($userId = authenticateUser($db, $username, $password)) 
        {                   

            // providerId and requestId is Id of  a friend pair,
            // providerId is the Id of making first friend request
            // requestId is the Id of the friend approved the friend request made by providerId

            // fetching friends, 
            // left join expression is a bit different, 
            //      it is required to fetch the friend, not the users itself

            $sql = "select u.Id, u.username, (NOW()-u.authenticationTime) as authenticateTimeDifference, u.IP, 
                                        f.providerId, f.requestId, f.status, u.port 
                            from friends f
                            left join users u on 
                                        u.Id = if ( f.providerId = ".$userId.", f.requestId, f.providerId ) 
                            where (f.providerId = ".$userId." and f.status=".USER_APPROVED.")  or 
                                         f.requestId = ".$userId." ";

            //$sqlmessage = "SELECT * FROM `messages` WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 ";

            $sqlmessage = "SELECT m.id, m.fromuid, m.touid, m.sentdt, m.read, m.readdt, m.messagetext, u.username from messages m \n"
    . "left join users u on u.Id = m.fromuid WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 ";


            if ($result = $db->query($sql))         
            {
                    $out .= "<data>"; 
                    $out .= "<user userKey='".$userId."' />";
                    while ($row = $db->fetchObject($result))
                    {
                        $status = "offline";
                        if (((int)$row->status) == USER_UNAPPROVED)
                        {
                            $status = "unApproved";
                        }
                        else if (((int)$row->authenticateTimeDifference) < TIME_INTERVAL_FOR_USER_STATUS)
                        {
                            $status = "online";

                        }
                        $out .= "<friend  username = '".$row->username."'  status='".$status."' IP='".$row->IP."' userKey = '".$row->Id."'  port='".$row->port."'/>";

                                                // to increase security, we need to change userKey periodically and pay more attention
                                                // receiving message and sending message 

                    }
                        if ($resultmessage = $db->query($sqlmessage))           
                            {
                            while ($rowmessage = $db->fetchObject($resultmessage))
                                {
                                $out .= "<message  from='".$rowmessage->username."'  sendt='".$rowmessage->sentdt."' text='".$rowmessage->messagetext."' />";
                                $sqlendmsg = "UPDATE `messages` SET `read` = 1, `readdt` = '".DATE("Y-m-d H:i")."' WHERE `messages`.`id` = ".$rowmessage->id.";";
                                $db->query($sqlendmsg);
                                }
                            }
                    $out .= "</data>";
            }
            else
            {
                $out = FAILED;
            }           
        }
        else
        {
                // exit application if not authenticated user
                $out = FAILED;
        }



    break;

    case "signUpUser":
        if (isset($_REQUEST['email']))
        {
             $email = $_REQUEST['email'];       

             $sql = "select Id from  users 
                            where username = '".$username."' limit 1";



             if ($result = $db->query($sql))
             {
                    if ($db->numRows($result) == 0) 
                    {
                            $sql = "insert into users(username, password, email)
                                values ('".$username."', '".$password."', '".$email."') ";                          

                                error_log("$sql", 3 , "error_log");
                            if ($db->query($sql))   
                            {
                                    $out = SUCCESSFUL;
                            }               
                            else {
                                    $out = FAILED;
                            }                           
                    }
                    else
                    {
                        $out = SIGN_UP_USERNAME_CRASHED;
                    }
             }                      
        }
        else
        {
            $out = FAILED;
        }   
    break;

    case "sendMessage":
    if ($userId = authenticateUser($db, $username, $password)) 
        {   
        if (isset($_REQUEST['to']))
        {
             $tousername = $_REQUEST['to']; 
             $message = $_REQUEST['message'];   

             $sqlto = "select Id from  users where username = '".$tousername."' limit 1";



                    if ($resultto = $db->query($sqlto))         
                    {
                        while ($rowto = $db->fetchObject($resultto))
                        {
                            $uto = $rowto->Id;
                        }
                        $sql22 = "INSERT INTO `messages` (`fromuid`, `touid`, `sentdt`, `messagetext`) VALUES ('".$userId."', '".$uto."', '".DATE("Y-m-d H:i")."', '".$message."');";                       

                                error_log("$sql22", 3 , "error_log");
                            if ($db->query($sql22)) 
                            {
                                    $out = SUCCESSFUL;
                            }               
                            else {
                                    $out = FAILED;
                            }                       
                        $resultto = NULL;
                    }   

        $sqlto = NULL;
        }
        }
        else
        {
            $out = FAILED;
        }   
    break;

    case "addNewFriend":
        $userId = authenticateUser($db, $username, $password);
        if ($userId != NULL)
        {

            if (isset($_REQUEST['friendUserName']))         
            {               
                 $friendUserName = $_REQUEST['friendUserName'];

                 $sql = "select Id from users 
                                 where username='".$friendUserName."' 
                                 limit 1";
                 if ($result = $db->query($sql))
                 {
                        if ($row = $db->fetchObject($result))
                        {
                             $requestId = $row->Id;

                             if ($row->Id != $userId)
                             {
                                     $sql = "insert into friends(providerId, requestId, status)
                                         values(".$userId.", ".$requestId.", ".USER_UNAPPROVED.")";

                                     if ($db->query($sql))
                                     {
                                            $out = SUCCESSFUL;
                                     }
                                     else
                                     {
                                            $out = FAILED;
                                     }
                            }
                            else
                            {
                                $out = FAILED;  // user add itself as a friend
                            }                                                
                        }
                        else
                        {
                            $out = FAILED;                      
                        }
                 }                               
                 else
                 {
                        $out = FAILED;
                 }              
            }
            else
            {
                    $out = FAILED;
            }           
        }
        else
        {
            $out = FAILED;
        }   
    break;

    case "responseOfFriendReqs":
        $userId = authenticateUser($db, $username, $password);
        if ($userId != NULL)
        {
            $sqlApprove = NULL;
            $sqlDiscard = NULL;
            if (isset($_REQUEST['approvedFriends']))
            {
                  $friendNames = split(",", $_REQUEST['approvedFriends']);
                  $friendCount = count($friendNames);
                  $friendNamesQueryPart = NULL;
                  for ($i = 0; $i < $friendCount; $i++)
                  {
                    if (strlen($friendNames[$i]) > 0)
                    {
                        if ($i > 0 )
                        {
                            $friendNamesQueryPart .= ",";
                        }

                        $friendNamesQueryPart .= "'".$friendNames[$i]."'";

                    }               

                  }
                  if ($friendNamesQueryPart != NULL)
                  {
                    $sqlApprove = "update friends set status = ".USER_APPROVED."
                                    where requestId = ".$userId." and 
                                                providerId in (select Id from users where username in (".$friendNamesQueryPart."));
                                ";      
                  }

            }
            if (isset($_REQUEST['discardedFriends']))
            {
                    $friendNames = split(",", $_REQUEST['discardedFriends']);
                  $friendCount = count($friendNames);
                  $friendNamesQueryPart = NULL;
                  for ($i = 0; $i < $friendCount; $i++)
                  {
                    if (strlen($friendNames[$i]) > 0)
                    {
                        if ($i > 0 )
                        {
                            $friendNamesQueryPart .= ",";
                        }

                        $friendNamesQueryPart .= "'".$friendNames[$i]."'";

                    }                   
                  }
                  if ($friendNamesQueryPart != NULL)
                  {
                    $sqlDiscard = "delete from friends 
                                        where requestId = ".$userId." and 
                                                    providerId in (select Id from users where username in (".$friendNamesQueryPart."));
                                            ";
                  }                     
            }
            if (  ($sqlApprove != NULL ? $db->query($sqlApprove) : true) &&
                        ($sqlDiscard != NULL ? $db->query($sqlDiscard) : true) 
               )
            {
                $out = SUCCESSFUL;
            }
            else
            {
                $out = FAILED;
            }       
        }
        else
        {
            $out = FAILED;
        }
    break;

    default:
        $out = FAILED;      
        break;  
}

echo $out;



///////////////////////////////////////////////////////////////
function authenticateUser($db, $username, $password)
{

    $sql22 = "select * from users 
                    where username = '".$username."' and password = '".$password."' 
                    limit 1";

    $out = NULL;
    if ($result22 = $db->query($sql22))
    {
        if ($row22 = $db->fetchObject($result22))
        {
                $out = $row22->Id;

                $sql22 = "update users set authenticationTime = NOW(), 
                                                                 IP = '".$_SERVER["REMOTE_ADDR"]."' ,
                                                                 port = 15145 
                                where Id = ".$row22->Id."
                                limit 1";

                $db->query($sql22);             


        }       
    }

    return $out;
}

?>  

だから私は暗号化とソルトの代わりに私の登録部分でもmd5を試しました。そのため、ユーザーを認証して合格するときに、復号化する必要はありません。知りません。私はこの部分で本当に間違っています。

bart2puck

あなたはやろうとしていますか:

 SELECT * FROM patient_user WHERE username = '$username' and encrypted_password = md5($password)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Securityを使用して、ユーザー名とパスワードではなくIDとパスワードでユーザーを認証する方法

分類Dev

root権限なしでPAMを使用してユーザー名/パスワードを認証する方法

分類Dev

AWS Redshiftでmd5ハッシュパスワードを使用すると、パスワード認証が失敗するのはなぜですか?

分類Dev

AndroidのFirestoreでユーザー名とパスワードのみを使用して認証する

分類Dev

ユーザー名とパスワードを使用して Google 認証トークンを取得する

分類Dev

nodejs、expressおよび基本認証を使用して、ユーザー名とパスワードを取得するにはどうすればよいですか?

分類Dev

pkgcloudを使用してOpenStackでユーザー名とパスワードを認証する

分類Dev

SpringSecurity認証ログインでユーザーが入力したユーザー名とパスワードの値を取得する方法

分類Dev

JDBCを使用してユーザー名とパスワードの認証を実装する

分類Dev

ユーザー名とパスワードが必要なWebServiceを使用して、SpringSecurityでユーザーを認証する

分類Dev

シンボルを使用してAndroidでユーザー名とパスワードを検証する方法は?

分類Dev

Pythonを使用してSeleniumでユーザー名とパスワードを使用してプロキシを認証する方法

分類Dev

ユーザー名とパスワードを使用しないユーザー認証

分類Dev

Laravel5.2の組み込み認証を使用して古いmd5パスワードをbcryptに移行する

分類Dev

node.jsでユーザー名/パスワード認証を必要とするRESTAPIを使用する方法

分類Dev

ユーザーのパスワードを使用してユーザー名を暗号化することは、ユーザーがサービスにログインできるようにするための実行可能で安全な方法ですか?

分類Dev

Laravel 5-ユーザー名とパスワードがテーブルと一致していることを確認する方法は?

分類Dev

C ++用のユーザー名/パスワード認証を使用したThriftsasl

分類Dev

ユーザー名とパスワードを使用してAzureREST APIに対して認証する方法(アプリIDなし)

分類Dev

Controller for .NET Web API2.0で基本認証のユーザー名/パスワードを取得する方法

分類Dev

Md5を使用してIonicでパスワードを暗号化する

分類Dev

PythonでADALを使用してAzureBlockchain Workbenchのユーザー名とパスワードを使用して認証ベアラーを取得するにはどうすればよいですか?

分類Dev

kubernetes apiserviceを開始(再起動)し、ユーザー名とパスワードの認証を追加する方法

分類Dev

SSH認証を設定しているのに、githubがユーザー名/パスワードを要求するのはなぜですか?

分類Dev

PHP-MD5とMySQLを使用したパスワードの検証

分類Dev

ユーザー名とパスワードを使用してKuberneteskubectlで認証するにはどうすればよいですか?

分類Dev

AzureFunctionsを介してAzureADでユーザーを認証する(ユーザー名とパスワードを検証する)

分類Dev

c#を使用してAzureADに対してユーザーのパスワードを認証する方法

分類Dev

ユーザー名とパスワードの基本認証でswagger-codegenを使用する

Related 関連記事

  1. 1

    Spring Securityを使用して、ユーザー名とパスワードではなくIDとパスワードでユーザーを認証する方法

  2. 2

    root権限なしでPAMを使用してユーザー名/パスワードを認証する方法

  3. 3

    AWS Redshiftでmd5ハッシュパスワードを使用すると、パスワード認証が失敗するのはなぜですか?

  4. 4

    AndroidのFirestoreでユーザー名とパスワードのみを使用して認証する

  5. 5

    ユーザー名とパスワードを使用して Google 認証トークンを取得する

  6. 6

    nodejs、expressおよび基本認証を使用して、ユーザー名とパスワードを取得するにはどうすればよいですか?

  7. 7

    pkgcloudを使用してOpenStackでユーザー名とパスワードを認証する

  8. 8

    SpringSecurity認証ログインでユーザーが入力したユーザー名とパスワードの値を取得する方法

  9. 9

    JDBCを使用してユーザー名とパスワードの認証を実装する

  10. 10

    ユーザー名とパスワードが必要なWebServiceを使用して、SpringSecurityでユーザーを認証する

  11. 11

    シンボルを使用してAndroidでユーザー名とパスワードを検証する方法は?

  12. 12

    Pythonを使用してSeleniumでユーザー名とパスワードを使用してプロキシを認証する方法

  13. 13

    ユーザー名とパスワードを使用しないユーザー認証

  14. 14

    Laravel5.2の組み込み認証を使用して古いmd5パスワードをbcryptに移行する

  15. 15

    node.jsでユーザー名/パスワード認証を必要とするRESTAPIを使用する方法

  16. 16

    ユーザーのパスワードを使用してユーザー名を暗号化することは、ユーザーがサービスにログインできるようにするための実行可能で安全な方法ですか?

  17. 17

    Laravel 5-ユーザー名とパスワードがテーブルと一致していることを確認する方法は?

  18. 18

    C ++用のユーザー名/パスワード認証を使用したThriftsasl

  19. 19

    ユーザー名とパスワードを使用してAzureREST APIに対して認証する方法(アプリIDなし)

  20. 20

    Controller for .NET Web API2.0で基本認証のユーザー名/パスワードを取得する方法

  21. 21

    Md5を使用してIonicでパスワードを暗号化する

  22. 22

    PythonでADALを使用してAzureBlockchain Workbenchのユーザー名とパスワードを使用して認証ベアラーを取得するにはどうすればよいですか?

  23. 23

    kubernetes apiserviceを開始(再起動)し、ユーザー名とパスワードの認証を追加する方法

  24. 24

    SSH認証を設定しているのに、githubがユーザー名/パスワードを要求するのはなぜですか?

  25. 25

    PHP-MD5とMySQLを使用したパスワードの検証

  26. 26

    ユーザー名とパスワードを使用してKuberneteskubectlで認証するにはどうすればよいですか?

  27. 27

    AzureFunctionsを介してAzureADでユーザーを認証する(ユーザー名とパスワードを検証する)

  28. 28

    c#を使用してAzureADに対してユーザーのパスワードを認証する方法

  29. 29

    ユーザー名とパスワードの基本認証でswagger-codegenを使用する

ホットタグ

アーカイブ