Avatar billede kgp43 Nybegynder
01. juni 2004 - 12:38 Der er 11 kommentarer og
1 løsning

Krypter password

Hej,

Jeg har brug for at lave mit password om til md5 på selve login.htm siden. Dvs at login_check.php modtager password'et krypteret.


Har allerede prøvet, men kan ikke få det til at virke:

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="200" align="center" valign="bottom" bgcolor="#EFEFEF" class="left-frame"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">&copy;
      2004, Tackleprices.com</font></td>
    <td valign="top">
    <form name="form1" action="login_check.php" method="post">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="60" colspan="4">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="30" align="center" class="top-border">&nbsp;</td>
          <td width="120" height="30" align="center" class="top-border">&nbsp;</td>
          <td height="30" colspan="2" valign="bottom" class="top-border">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="110" rowspan="2" align="center" valign="bottom">&nbsp;</td>
          <td width="120" height="110" rowspan="2" align="center" valign="bottom"><img src="/img/login.gif" width="97" height="105"></td>
        </tr>
        <tr>
            <td height="110" colspan="2" valign="bottom" class="leftspan"><font color="#006393" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Tackleprices
              | Merchant Area</strong></font><br>
          <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Enter your username and password to login</font><br> <img src='/img/break_CCCCCC.gif' width='400' height='1' vspace='8'></td>
        </tr>
          <tr>
            <td width="30" rowspan="4" align="center" valign="top" class="register">&nbsp;</td>
            <td width="120" rowspan="4" align="center" valign="top" class="register">[ <a href="/merchant/add.php"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#990000">Register</font></a> ]</td>
            <td width="93" height="25" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Username:</font></td>
            <td width="826" height="25">
              <input type="text" name="username" class="form1">
            </td>
          </tr>
          <tr>
            <td height="30" valign="middle" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password</font>:</td>
            <td height="30" valign="middle"> <input type="password" name="password" class="form1">
            </td>
          </tr>
        <tr>
            <td height="30" valign="top">&nbsp;</td>
          <td height="30" valign="bottom"> <input type=submit value=Login onclick="hashPass.value = hex_md5(password.value);this.form.password.value='';"></td>
        </tr>
        <tr>
          <td height="30" colspan="2" class="bottom-border">&nbsp;</td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede luzk Nybegynder
01. juni 2004 - 16:09 #1
Kunne det være muligt evt at se hele din kode, for det lader til der mangler noget:
hashPass - er det et felt hvor du vil skrive værdien?
hex_md5 - er det en metode du definerer i din header?

Jeg går udfra at det du vil gøre er at skrive den krypterede værdi fx i et hidden felt, og derefter nulstille password feltet inden du sender videre - er det korrekt?

/Luzk
Avatar billede grunken Nybegynder
01. juni 2004 - 16:19 #2
er det noget ligende det her du bruger ?

http://pajhome.org.uk/crypt/md5/md5src.html

for så skal du huske at inkludere js filen :o)

<script type="text/javascript" src="md5.js"></script>

så laver vi en lille funktion til dit script

<script type="text/javascript">
function hash(frm)
frm.hashPass.value=hex_md5(frm.password.value);
frm.password.value="";
return true;
</script>

Ovenstående placeres mellem <head> & </head>

Næste step er så at smide en onsubmit på din form

<form name="form1" action="login_check.php" method="post" onsubmit="return hash(this);">

Og sidst men ikke mindst fjerner du onclick="osv." på din submitknap :o)
Avatar billede kgp43 Nybegynder
01. juni 2004 - 17:29 #3
Det virker ikke, den vil ikke godtage brugernavn of password.
md5.js er downloaded og så har jeg fjernet krypteringen i login_check.php


Dette er min login.htm:
-------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript">
function hash(frm)
frm.hashPass.value=hex_md5(frm.password.value);
frm.password.value="";
return true;
</script>

</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="200" align="center" valign="bottom" bgcolor="#EFEFEF" class="left-frame"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">&copy;
      2004, Tackleprices.com</font></td>
    <td valign="top">
    <form name="form1" action="login_check.php" method="post" onsubmit="return hash(this);">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="60" colspan="4">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="30" align="center" class="top-border">&nbsp;</td>
          <td width="120" height="30" align="center" class="top-border">&nbsp;</td>
          <td height="30" colspan="2" valign="bottom" class="top-border">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="110" rowspan="2" align="center" valign="bottom">&nbsp;</td>
          <td width="120" height="110" rowspan="2" align="center" valign="bottom"><img src="/img/login.gif" width="97" height="105"></td>
        </tr>
        <tr>
            <td height="110" colspan="2" valign="bottom" class="leftspan"><font color="#006393" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Tackleprices
              | Merchant Area</strong></font><br>
          <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Enter your username and password to login</font><br> <img src='/img/break_CCCCCC.gif' width='400' height='1' vspace='8'></td>
        </tr>
          <tr>
            <td width="30" rowspan="4" align="center" valign="top" class="register">&nbsp;</td>
            <td width="120" rowspan="4" align="center" valign="top" class="register">[ <a href="/merchant/add.php"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#990000">Register</font></a> ]</td>
            <td width="93" height="25" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Username:</font></td>
            <td width="826" height="25">
              <input type="text" name="username" class="form1">
            </td>
          </tr>
          <tr>
            <td height="30" valign="middle" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password</font>:</td>
            <td height="30" valign="middle"> <input type="password" name="password" class="form1">
            </td>
          </tr>
        <tr>
            <td height="30" valign="top">&nbsp;</td>
          <td height="30" valign="bottom"> <input type="submit" name="Submit" value="Login"></td>
        </tr>
        <tr>
          <td height="30" colspan="2" class="bottom-border">&nbsp;</td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede luzk Nybegynder
01. juni 2004 - 17:47 #4
prøv følgende:
===
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript">
function hash(frm)
{
  frm.hashPass.value=hex_md5(frm.password.value);
  frm.password.value="";
  return true;
}
</script>

</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="200" align="center" valign="bottom" bgcolor="#EFEFEF" class="left-frame"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">&copy;
      2004, Tackleprices.com</font></td>
    <td valign="top">
    <form name="frm" action="login_check.php" method="post" onsubmit="return hash(this);">
    <input type="hidden" name="hashPass" value="">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="60" colspan="4">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="30" align="center" class="top-border">&nbsp;</td>
          <td width="120" height="30" align="center" class="top-border">&nbsp;</td>
          <td height="30" colspan="2" valign="bottom" class="top-border">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="110" rowspan="2" align="center" valign="bottom">&nbsp;</td>
          <td width="120" height="110" rowspan="2" align="center" valign="bottom"><img src="/img/login.gif" width="97" height="105"></td>
        </tr>
        <tr>
            <td height="110" colspan="2" valign="bottom" class="leftspan"><font color="#006393" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Tackleprices
              | Merchant Area</strong></font><br>
          <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Enter your username and password to login</font><br> <img src='/img/break_CCCCCC.gif' width='400' height='1' vspace='8'></td>
        </tr>
          <tr>
            <td width="30" rowspan="4" align="center" valign="top" class="register">&nbsp;</td>
            <td width="120" rowspan="4" align="center" valign="top" class="register">[ <a href="/merchant/add.php"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#990000">Register</font></a> ]</td>
            <td width="93" height="25" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Username:</font></td>
            <td width="826" height="25">
              <input type="text" name="username" class="form1">
            </td>
          </tr>
          <tr>
            <td height="30" valign="middle" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password</font>:</td>
            <td height="30" valign="middle"> <input type="password" name="password" class="form1">
            </td>
          </tr>
        <tr>
            <td height="30" valign="top">&nbsp;</td>
          <td height="30" valign="bottom"> <input type="submit" name="Submit" value="Login"></td>
        </tr>
        <tr>
          <td height="30" colspan="2" class="bottom-border">&nbsp;</td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
</table>
</body>
</html>
===

Det jeg har gjort er:
- Indsat { og } i funktionen (afgrænser funktionen)
- omdøbt din form til 'frm' så du referrerer til den korrekt
- indsat hidden felt kaldet hashPass som du skriver den krypterede værdi til.

Det du nu skal gøre er at hente værdien fra hashPass i din login fil, og ikke værdien fra password.

Du skal desuden sikre dig at dit password i databasen enten allerede er krypteret, eller bliver det i din PHP fil. PHP har en indbygget metode til at kryptere passwords med.
Hvis du ikke krypterer i PHP vil du stå i den situation at dit password fra klienten er krypteret men passwordet fra databasen er ikke, og derfor vil de to aldrig være ens

/Luzk
Avatar billede kgp43 Nybegynder
01. juni 2004 - 17:52 #5
Password'et i db'en allerede krypteret (bruger den indbyggede funktion i php).
Jeg tester det lige senere i aften :)
Avatar billede luzk Nybegynder
01. juni 2004 - 17:57 #6
k - jamen så _burde_ det spille :-)
ved ikke om det har relevans, men hvis det ikke spiller når du har prøvet det nye, så prøv at udskrive både værdien fra db samt den overførte værdi i din loginfil - så kan du hurtigt se hvad der går galt :-)

/Luzk
Avatar billede kgp43 Nybegynder
01. juni 2004 - 18:00 #7
Virker heller ikke



login.htm:
-------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript">
function hash(frm)
{
  frm.hashPass.value=hex_md5(frm.password.value);
  frm.password.value="";
  return true;
}
</script>

<link href="/merchant/styles/login.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="200" align="center" valign="bottom" bgcolor="#EFEFEF" class="left-frame"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">&copy;
      2004, Tackleprices.com</font></td>
    <td valign="top">
    <form name="frm" action="login_check.php" method="post" onsubmit="return hash(this);">
    <input type="hidden" name="hashPass" value="">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="60" colspan="4">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="30" align="center" class="top-border">&nbsp;</td>
          <td width="120" height="30" align="center" class="top-border">&nbsp;</td>
          <td height="30" colspan="2" valign="bottom" class="top-border">&nbsp;</td>
        </tr>
        <tr>
          <td width="30" height="110" rowspan="2" align="center" valign="bottom">&nbsp;</td>
          <td width="120" height="110" rowspan="2" align="center" valign="bottom"><img src="/img/login.gif" width="97" height="105"></td>
        </tr>
        <tr>
            <td height="110" colspan="2" valign="bottom" class="leftspan"><font color="#006393" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Tackleprices
              | Merchant Area</strong></font><br>
          <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Enter your username and password to login</font><br> <img src='/img/break_CCCCCC.gif' width='400' height='1' vspace='8'></td>
        </tr>
          <tr>
            <td width="30" rowspan="4" align="center" valign="top" class="register">&nbsp;</td>
            <td width="120" rowspan="4" align="center" valign="top" class="register">[ <a href="/merchant/add.php"><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#990000">Register</font></a> ]</td>
            <td width="93" height="25" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Username:</font></td>
            <td width="826" height="25">
              <input type="text" name="username" class="form1">
            </td>
          </tr>
          <tr>
            <td height="30" valign="middle" class="leftspan"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Password</font>:</td>
            <td height="30" valign="middle"> <input type="password" name="password" class="form1">
            </td>
          </tr>
        <tr>
            <td height="30" valign="top">&nbsp;</td>
          <td height="30" valign="bottom"> <input type="submit" name="Submit" value="Login"></td>
        </tr>
        <tr>
          <td height="30" colspan="2" class="bottom-border">&nbsp;</td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
</table>
</body>
</html>



login_check.php:
-------------------------------------------------------------------------------------
<?
/* Check User Script */
session_start();  // Start Session
include("/home/tacklepr/public_html/db.php");

// Convert to simple variables
$username = $_POST['username'];
$password = $_POST['password'];

//Adding slashes to the username and password variables
function my_addslashes($streng){
  return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

if((!$username) || (!$password)){
    //If one or both variables are empty, then the user get a error
    include 'login_failure.htm';
    exit();
}

// check if the user info validates the db
$sql = mysql_query("SELECT * FROM merchants WHERE login_name='$username' AND password='$password' AND status_admin='1'");
$login_check = mysql_num_rows($sql);

if($login_check > 0){
    while($row = mysql_fetch_array($sql)){
    foreach( $row AS $key => $val ){
        $$key = stripslashes( $val );
    }
        // Register some session variables!
        session_register('id');
        $_SESSION['id'] = $id;
        session_register('login_name');
        $_SESSION['login_name'] = $login_name;
        session_register('merchant_name');
        $_SESSION['merchant_name'] = $merchant_name;
        session_register('password');
        $_SESSION['password'] = $password;
       
        mysql_query("UPDATE merchants SET last_login=now() WHERE id='$id'");
        header("Location: index.php");
    }
} else {
    include 'login_failure.htm';
}
?>
Avatar billede kgp43 Nybegynder
01. juni 2004 - 18:02 #8
Det virkede inden jeg begyndte at rode med JS. Grunden til at jeg ville gøre det på denne måde, skyles at brugerne kan sniffe pass'et inden det bliver krypteret.
Avatar billede luzk Nybegynder
01. juni 2004 - 18:11 #9
kan godt følge dig i hvad det er du vil - har selv før gjort det samme, men ikke helt på samme måde.

Har du prøvet at skrive begge værdier ud for at se hvad der står i de to?
Kan se at du stadig henter passwordfeltet i din php, men den skal du lave om til $password = $_POST['hashPass']; da det jo er hashPass der er krypteret nu

/Luzk
Avatar billede kgp43 Nybegynder
01. juni 2004 - 18:19 #10
Det virkede :)
Takker for hjælpen.
Avatar billede luzk Nybegynder
01. juni 2004 - 18:22 #11
super - takker for point :-)
hvis du vil lege lidt mere med kryptering i DB kan du se her: http://dev.mysql.com/doc/mysql/en/Encryption_functions.html går udfra det er MySQL du benytter

/Luzk
Avatar billede kgp43 Nybegynder
01. juni 2004 - 18:25 #12
Tror jeg kan klarer mig noget tid nu :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester