Zabezpečenie login skriptu proti hacknutiu

Programovacie jazyky, rady, poradňa...
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Zabezpečenie login skriptu proti hacknutiu

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

Chcel by som vás poprosiť že či by niekdo bol ochotný mi ošetriť tento skript proti hacknutiu:
Tu je php skript na login:

Kód: Vybrať všetko

<?php
$heslo = "niakeheslo"; /*nastavíme si heslo*/

session_start();
$pass = $_POST['heslo'];
/*proměnná $pass se rovná tomu co bylo zadáno ve formulari na strane formular-heslo.php*/ 
       
if (($pass == $heslo) or ($_SESSION['authuser'] == 1)) {

	$_SESSION['authuser'] = 1;
	/*pokud se zadané a stanovené heslo rovnají, můžeme nastavit session authuser =1, to se bude předávat do všech stránek a díky tomu budete mít také přístup k zaheslovaným stránkám; stránka se normálně načte; musíme také vytvořit možnost, že už bude někdo přihlášený a na úvodní stránku se vrátí proto použijeme-or-
	(což znamená něco jako -nebo-)*/
	}else {
		echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
		exit();
		/*pokud se hesla rovnat nebudou, tak se vypíše echo  a pomocí funkce exit() se přestane stránka načítat*/
		}
?>
     Tady už pokračuje obyčejná HTML stránka.. samozřejmě začnete znaky
     <HTML>....atd.
A na každú zaheslovanú stránu dávam toto:

Kód: Vybrať všetko

<?php
session_start();
if ($_SESSION['authuser'] != 1) {
	echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
	exit();
	}
?>
Nemohol by mi to niekdo pomôcť ?
Ďakujem
Gepid
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1006
Registrovaný: 15 júl 2008, 16:54
Bydlisko: Trnava
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

Pozri si niečo o htmlspecialchars: http://sk2.php.net/manual/en/function.h ... lchars.php
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

Gepid: a čo s tým má htmlspecialchars? Alebo ty si tiež jeden z tých čo počuli že sa to používa tak to drbeš všade keď je heslo aj keď je to tam zbytočné? :)
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Re: Zabezpečenie login skriptu proti hacknutiu

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

A ako ináč by sa dal ten skript zabezpečiť?
Ďakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

na dvoch riadkoch je zbytočné hovoriť či je bezpečný alebo nie. Častokrát je diera úplne inde (napríklad cez iný skript sa dostane do zabezpečenej stránky, neošetrený upload, ukradnutie cookies cez xss...). Takže je zbytočné aby si mal login v poriadku ak máš chyby inde. Tento login je tak primitívny že sa tam ani nič pokaziť nedá, len by som nedával heslo do premennej $heslo, lebo aj cez post posielaš input s menom heslo. Pri register_globals si môžeš tieto premenné prepisovať a môže ti to narobiť paseku. Ak chceš ale bezpečnosť ešte na vyššej úrovni, toto je lahké obísť bruteforcom alebo slovníkom. Mohol by si tam dať nejaké časové limity medzi neúspešnými pokusmi
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Re: Zabezpečenie login skriptu proti hacknutiu

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

Už som niečo spravil, dal som tam ten set_time_limit(15):

Kód: Vybrať všetko

<?php
$heslo = "webscript"; 

session_start();
$pass = htmlspecialchars($_POST['heslo'], ENT_QUOTES);
       
if (($pass == $heslo) or ($_SESSION['authuser'] == 1)) {

	$_SESSION['authuser'] = 1;
	}else {
		echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
		exit();
		
		}
set_time_limit(15);
?>
Kolko sekúnd mi odporúčaš?
Ďakujem
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

ja by som to spravil tak ze po 3 neuspesnych pokusoch k urcitemu uctu by som bud blokol alebo by som tam zacal zobrazovat captcha. A s tymi casovymi intervalmi si myslim ze to bolo myslene tak ze ked mas nesupesny pokus niekde si ho poznacis a povolis dalsie prihlasenie k tomu uctu az o urcity cas setTimeout co tu spominas (teda ak ide o JS) tak to neni moc rozumne to cez to riesit teda celkovo by som sa podla mna nemala riesit bezpecnost u pouzivatela v prehliadaci ale na strane servera.

//EDIT:
a ked upravujes to co si tu pisal tak to tam aspon napis nech tu ludia nevyzeraju ako dementi ze pisu uplne odveci
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Zabezpečenie login skriptu proti hacknutiu

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

WebScript napísal:...
Funkcia set_time_limit slúži na niečo iné (a teda nerobí to, čo chceš).
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

z definicie:
Set the number of seconds a script is allowed to run. If this is reached, the script returns a fatal error. The default limit is 30 seconds or, if it exists, the max_execution_time value defined in the php.ini.
a ty nechces maximalny cas na prevedenie skriptu
Gepid
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1006
Registrovaný: 15 júl 2008, 16:54
Bydlisko: Trnava
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

audiotrack napísal:Gepid: a čo s tým má htmlspecialchars? Alebo ty si tiež jeden z tých čo počuli že sa to používa tak to drbeš všade keď je heslo aj keď je to tam zbytočné? :)
Nevidím dôvod nedať to tam :D Hocikde keď vidím nejaký skript so vstupmi tak tam je htmlspecialchars.
Kedy by som to mal teda použiť?
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: Zabezpečenie login skriptu proti hacknutiu

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

definicia:
This function is useful in preventing user-supplied text from containing HTML markup, such as in a message board or guest book application.
anglicky snad vies
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Zabezpečenie login skriptu proti hacknutiu

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

Používa sa to keď na html stránke chceš zobraziť text, ktorý by mohol obsahovať niečo, čo by mohol interpretovať prehliadač (a teda napr. by tam bol text, ktorý by vyzeral ako html značky).
Ak chceš niečo vložiť do DB, tak musíš použiť spôsob, ktorý je vhodný pre DB, ak chceš vložiť niečo do URL, tak zase musíš použiť správny spôsob (pre každú činnosť sa to robí trochu inak).
Napísať odpoveď