Zabezpecenie registracie v PHP

Programovacie jazyky, rady, poradňa...
Slayter
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3111
Registrovaný: 28 jan 2006, 9:19
Bydlisko: Malmö, SWE

Zabezpecenie registracie v PHP

Príspevok od používateľa Slayter »

Caute,

pracujem na jednej veci a chcem tam mat funkcnu registraciu. Zatial mam hotove toto (kod nizsie), len sa obavam o bezpecnost, chcel by som aby informacie boli sifrovane ked sa odosielaju. Mate nejake rady? Diky vopred.

[toto je subor register.php]

Kód: Vybrať všetko

<?php

if (!empty($_POST[username]))
{
	// zhodne hesla?
	if ($_POST[password] != $_POST[password2])
		exit("Vase hesla sa nezhoduju. Uistite sa ze ste zadali spravne udaje.");

	// priradi datum a cas, zabrani cachovaniu aplikacie
	$date = gmdate('D, d M Y H:i:s');
	$ip = $_SERVER[REMOTE_ADDR];

	require_once("connect.php");

	// samotna registracia, vlozit udaje do tabulky
	$query = mysql_query("INSERT INTO members 
	(username, email, password, date, ip)
	VALUES	('$_POST[username]','$_POST[email]','$_POST[password]','$date','$ip')")
	or die ("Chyba, pouzivatela sa nepodarilo zaregistrovat.");
	
	echo "Vitajte $_POST[username]! Uspesne ste sa zaregistrovali.<br /><br />
		Prihlaste sa kliknutim na nasledujuci odkaz <a href='login.php'><b>TU</b></a>.";
	exit();
}

?>

<html>
	<head>
		<title>Registracia</title>
	</head>
	<body>
		<form action="register.php" method="post">
			<table width="45%" border="0" align="left" cellpadding="3" cellspacing="1">
				<tr>
					<td width="100%"><h2>Registracia</h2></td>
				</tr>
				<tr>
					<td width="100%"><label>Uzivatelske meno: <input type="text" name="username" size="25" value=""></label></td>
				</tr>
				<tr>
					<td width="100%"><label>Email: <input type="text" name="email" size="25" value="@"></label></td>
				</tr>

				<tr>
					<td width="100%"><label>Heslo: <input type="password" name="password" size="25" value=""></label></td>
				</tr>
				<tr>
					<td width="100%"><label>Povtrd heslo: <input type="password" name="password2" size="25" value=""></label></td>
				</tr>
				<tr>
					<td width="100%"><input type="submit" value="Registruj!"></td>
				</tr>
			</table>
		</form>
		</body>
</html>
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa c-ice »

hmm a nechcelo by to osetrit najskor voci SQL injection ? a heslo ukladat v MD5 ?
Slayter
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3111
Registrovaný: 28 jan 2006, 9:19
Bydlisko: Malmö, SWE

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa Slayter »

nebolo by odveci, keby som nebol php noob :roll:

mozes poradit ako na to? V podstate sifrovanie vsetkych poli si viem vyriesit ako tak sam.

Co proti SQL injection?
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa Mmartin »

htmlspecialchars? addslashes? magic quotes?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa audiotrack »

to by ma zaujímalo, ako si to šifrovanie chceš spraviť. Jediná vec čo mi napadá je ssl certifikát, a teda by ti web bežal na https protokole, ale ak si php noob tak neverím že takéto nastavenia zvládneš spraviť. Zrejme sa bavíme len o nejakej trápnej js funkcii, nie?
Slayter
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3111
Registrovaný: 28 jan 2006, 9:19
Bydlisko: Malmö, SWE

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa Slayter »

audio: ee, mal som prave na mysli ukladanie do MD5. Terminologia v tejto oblasti nie je mojou silnou strankou. :oops:
hwip
Zablokovaný
Zablokovaný
Používateľov profilový obrázok
Príspevky: 306
Registrovaný: 20 mar 2011, 12:03

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa hwip »

mozno ze by stacilo

Kód: Vybrať všetko

$sifrovane_heslo = md5($_POST[password]);
a zasifrovalo by ti to do md5. len si daj pozor, aby bunka v tabulke nemala obmedzenie pod 32 znakov, lebo md5 koduje do 32 znakove hashu
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa weroro »

A ešte by sa tam zišlo pridať salt.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa c-ice »

aky SALT ? MD5 je jedno cestny kryptovaci algoritmus nie ? podla mna je zbytocne uchovavat niekde u seba heslo MD5 je bezpecnejsie si myslim a ked strati vygeneruje sa nove a posle sa na mail :)

PS: asi mate na servery neprehodene hodiny lebo pisem o 18:00 a predchadzajuci post je o 18:55 :D
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa Mmartin »

c-ice napísal:aky SALT ? MD5 je jedno cestny kryptovaci algoritmus nie ? podla mna je zbytocne uchovavat niekde u seba heslo MD5 je bezpecnejsie si myslim a ked strati vygeneruje sa nove a posle sa na mail :)

PS: asi mate na servery neprehodene hodiny lebo pisem o 18:00 a predchadzajuci post je o 18:55 :D
Cestujes casom...

V nastaveniach si odskrtni letny cas.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa audiotrack »

c-ice napísal:aky SALT ? MD5 je jedno cestny kryptovaci algoritmus nie ? podla mna je zbytocne uchovavat niekde u seba heslo MD5 je bezpecnejsie si myslim a ked strati vygeneruje sa nove a posle sa na mail :)

PS: asi mate na servery neprehodene hodiny lebo pisem o 18:00 a predchadzajuci post je o 18:55 :D
je jednocestný, ale pomocou rainbow tables sa dá celkom dosť hesiel uhádnuť
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa c-ice »

jj su na to aj web stranky a z velkou Databazou hesiel a dostatočnym výpočtovým vykonom to ide aj svoj pomocne ked uz clovek ziska Hash ... preto moze spravit nieco taketo ... md5(md5($pass));
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa weroro »

Môj skromný názor je taký, že aj keď získaš hash, tak podľa jeho dĺžky vieš zistiť o aký hash sa jedná. Potom stačí už iba lámať. Ak pridáš na koniec hashu alebo inak do neho implementuješ náhodne vygenerovaný salt, je to už dosť "prasárna" na hádanie.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa audiotrack »

no lenže vybudovanie rainbow tabuľky pre md5(md5(*)) je pomerne jednoduché, vo všeobecnosti rovnaké ako pre samotné md5. Kým vybudovanie rainbow tabuľky pre saltovaný hash je prakticky nemožné, lebo nevieš salt a nevieš jeho umiestnenie (pred reťazcom, za reťazcom, dvakrát pripojený...)
hwip
Zablokovaný
Zablokovaný
Používateľov profilový obrázok
Príspevky: 306
Registrovaný: 20 mar 2011, 12:03

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa hwip »

ale ja si myslim, ze salt je tam nanic. Pokial ma dobry hosting, tak sa mu do DB nedostanu. Jedine nebezpecenstvo je davat to zakodovane heslo do URL, ale myslim si ze nikto nie je taky blby.
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa sharky-no »

:lol: tak naco tie hesla vobec hashuje? sak rovno ich tam moze dat nekodovane, ked to vsetko zalezi, ako ty hovoris, od dobreho hostingu.
hwip
Zablokovaný
Zablokovaný
Používateľov profilový obrázok
Príspevky: 306
Registrovaný: 20 mar 2011, 12:03

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa hwip »

aj to je pravda, ale osobne radsej hashujem. Lebo potom je prilis lakave pozriet sa ake ma uzivatel heslo v DB a vyskusat ho aj na inych kontach :D a tak ma to aspon nepokusa.
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa sharky-no »

nie nie, proste existuju metody napr. SQL Injection, vdaka ktorym sa mozu ludia naburat do databazy vdaka slabemu zabezpeceniu kodu, ktory nakodil programator, hosting s tym nema nic spolocne.
hwip
Zablokovaný
Zablokovaný
Používateľov profilový obrázok
Príspevky: 306
Registrovaný: 20 mar 2011, 12:03

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa hwip »

samozrejme, ja som však predpokladal, že je to skúsený programátor, ktorý min. použije všetky vyššie spomenuté príkazy. :D
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Zabezpecenie registracie v PHP

Príspevok od používateľa Mmartin »

hwip napísal:samozrejme, ja som však predpokladal, že je to skúsený programátor, ktorý min. použije všetky vyššie spomenuté príkazy. :D
Citujem z jeho prispevku:
nebolo by odveci, keby som nebol php noob
Nie je to skuseny programator :P
Napísať odpoveď