Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Syötetyn salasanan vertays crypt:llä kryptattuun salasanaan...

doze [11.03.2005 00:41:57]

#

Tere,

Kun salasanan kryptaa "crypt($salasana);" ja kirjottaa tiedostoon, niin kuinka voin testata myöhemmin esim kirjautumisessa, että vastaako syötetty salasana tiedostossa olevaa..?

Kun toi crypt palauttaa aina eri merkkijonon... pitääkö käyttää jotain kiinteää salt:ia ja jos pitää, niin mikä se on ja kuinka pitäisi tehdä?

Gugu [11.03.2005 08:37:20]

#

Tuon salasanan vois laittaa MD5 muotoon jolloin sitä voidaan vertailla suoraan.

Niko [11.03.2005 15:04:44]

#

Lue sitä manuaali, heti ekana on esimerkki miten tarkistetaan

doze [11.03.2005 16:12:12]

#

Ei voi käyttää MD5:sta kun teen htpasswd tiedoston käsittelijää. Koitin tota mitä manuaalissa oli jo aikaisemmin, mutta ei tahtonut toimia... pitää yrittää uudelleen, josko olin vaan mokannut.

doze [11.03.2005 18:03:00]

#

Hmm, mikäs tässä nyt.. salasanat kyllä täsmää, mutta väittää vaan että ei täsmäisi. Tässä koodi:

test.php

<?php

//klikataan formilta testaa nappia
if (isset($_POST['testaa'])) {


	$tunnus = $_POST['tunnus']; //tunnus formilta
	$salasana = $_POST['salasana']; //salasana formilta
	$tiedosto = ".htpasswd"; //htpasswd tiedosto
	$data = file($tiedosto); //tiedosto muuttujaan
	$kayttajat = array(); //taulukko käyttäjille

	//kerätään kaikki käyttäjät taulukkoon
	for ($i=0; $i<count($data); $i++) {
   		$rivi = explode(":", $data[$i]);
   		$kayttajat[$i] = $rivi[0];
	}

	//haetaan tunnuksen tiedot muuttujaan
	$tunnus_rivi = explode(":", $data[array_search($tunnus, $kayttajat)]);

	//vastaako tiedostossa oleva salasana syötettyä vanhaa salasanaa
	if (crypt($salasana, $tunnus_rivi[1]) == $tunnus_rivi[1]) {
		echo("salasana täsmää");
	} else {
		echo("salasana ei täsmää<br><br>".$tunnus_rivi[1]."<br>".crypt($salasana, $tunnus_rivi[1])."<br><br>");
	}

}

?>

<form name="lomake" method="post" action="test.php">
Tunnus: <input type="text" size="8" name="tunnus"><br>
Salasana: <input type="password" size="8" name="salasana"><br>
<input type="submit" name="testaa" value="Testaa">
</form>

Tuota voi testata osoitteessa: http://koti.mbnet.fi/f4w/test/test.php

Tunnus: test
Salasana: test

Salasanat näyttäisi olevan samat, mutta silti ei pelitä?
Pitääkö sitä tiedostosta haettua riviä jotenkin putsata, esim rivivaihdot jne?

Siinä .htpasswd tiedostossa mitä toi käyttää ei oo kun yksi rivi, ei rivin vaihtoja eikä mitään. Rivi tiedostossa on:

test:$1$YNwup0at$.RPQijv3frPpcZd8HpKuJ1

Missä vika?

ajv [11.03.2005 18:15:13]

#

Kokeileppa:

if(crypt($salasana, $tunnus_rivi[1]) == trim($tunnus_rivi[1])){...

Eli tuo siis "putsaa" rivinvaihdot.

doze [11.03.2005 20:57:55]

#

jees.. toimi ok nyt, tack.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta