Čau visiem,
Taisu loginu iekš php. Viss tākā būtu ok, tikai lieta tāda ka mans logins neatšķir LV burtus kā arī CAPS. Respektīvi ja man ir lietotājs ar niku 'ansis', viņš var ielogoties arī kā 'ANSIS' vai arī kā 'ĀŅŠĪŠ'. Ok, tie caps var palikt, jo tik un tā negribas divus lietotājus ar vienādu vārdu, tikai vienam ir CAPS, otram nav. Bet gribētos lai logins atšķir garumzīmes un mīkstinājuma zīmes. Kādi ir varianti?
Ā un vēl pie viena - kas iesācējam būtu jāzin par drošu Cookies lietošanu? Piemēram cik esmu sapratis tad vienkārši cookijā ielikt lietotāja id vai lietotāja vārdu nav prāta darbs? Hashot cookija satura vai kā?
Nu priekš "atcerēties mani" funkcijas var izmantot cepumus, bet tur tā pat glabāsies tikai kaut kāds identifikators, nevis lietotāja parole. Tā pat sesijas var glabāt dažādi un var arī laiku dažādu norādīt.
Un ja būtu visur unikods, tad nebūtu šādas problēmas
1) Skatīt linku.
2) Gadiem ilgā bezdarbība ir man likusi kautko svarīgu aizmirst vai arī vienkārši es nespēju izprast, kāpēc lietotājvārdu un paroli nevarēja likt vienā vaicājumā?
Tas varbūt ir overkill, bet es vispār pēdējā laikā visus useru datus kodēju ar aes rijndael. Un cookijos glabāju authashu no statiskiem mainīgajiem, tur IP utml, kurus ir diezgan pagrūti nospoofot. Bet paroles hashu likt cookijā ir ļoti pat stulbi, nekad to nevajag darīt ;) Tāda šņaga bija arī PHBB lidz to izlaboja, kas deva ļaunprātim iespēju tikt pie admina tiesībām. Cookijā vispār nevar glabāt ne lietotāju ne paroli, jo users var nomainīt lietotāja vārdu iekš kuukija un pie vaji projektētas sistēmas atkal tikt pie admina privilēģijām, piemēram situācija kad identificējas users ar cookie, skripts paņem no bāzes adminu listi un attiecīgi iešķiebj admina tiesības, ja vel sesijā tiek norādīts statisks variablis, kas norāda uz to ka autorizācija ir veikta un paroli parbaudit nevajag, tad vispār admina iespējas iegūt ir elementāri. Daudzi uz šito iekrīt vispār.
Ja gribi glabāt lietotāja datus kūkijos, tev ar kādu algoritmu vajadzetu piedomāt pie šo datu kodēšanas tajā pašā AES ja pieejams mcrypt paplašinājums, piemēram to pašu rijndael. Protams ka atkal nākas izmantot hard coded statisku atslēgu, vai arī authhashu no ip utml datiem. Bet plainā glabāt šos datus ir idiotisms.
_________________ #IP Over Avian Carriers
#Every language has an optimization operator. In C++ that operator is ‘//’
Ok, liels paldies par padomiem !
Mad - neesmu vēl tik gudrs, tāpēc mēģināju tos kūkijus padarīt cik vien drošus var ar savām zināšanām.
Bet tad vēl jautājums - ko īsti kūkijā būtu droši likt no lietotāja datiem? kā sapratu tad ar vienkāršu random ciparu kurš stāv datubāzē kamēr lietotājs ir pieslēdzies, nepietiks..
Nu ja tev vajag vairāk vai mazāk "nejaušu" autorizācijas stringu, tad uztaisi kaut vai md5 no time un vēl kaut kā, bet ne jau paroli, bet to patiešām būtu vienkāršāk darīt ar sesiju un nekādus stringus ģenerēt arī nevajadzētu, jo php pats tev to sesijas id izdomās. Sesijās kaut ko glabāt ir krietni vien drošāk kā cepumos, jo dati glabājas uz servera, un pašam lietotājam ir tikai sesijas id, ko pie tam zagt ir diezgan bezjēdzīgi. Un arī tur, bai ze vei, nav nekādas vajadzības glabāt paroles hešu.
mysql_query("UPDATE users SET login_code = '$login_code' WHERE username = '$username' AND password = '$hashed_password' ");
$result = mysql_query("SELECT * FROM users WHERE login_code = '$login_code' ");
$row = mysql_fetch_array($result);
$login_code = $row["login_code"];
setcookie("troksnis", $login_code, time()+7200);
Nesapratu, kur jūs izrāvāt, ka paroles hašs tiek glabats kūkijos? Šeit tiek ģenerēts random strings, kas arī tiek iemests datubāzē kā identifikācijas nummurs un tas ari tiek lietots kūkijam, viss ir bumbās. Cilvekam droši vien, ka galvu sajaucāt.
No otras puses piekritīšu Mad, daudz vienkāršāk to visu butu panākt ar sessijām...
http://php.net/manual/en/features.sessions.php
P.S. Ja gribi maksimālu drošību, tad uztaisi, lai, pieņemsim, reizi divās stundās tiek veikta veco kodu dzēšana no datubazes...
guitarman : 18 Jūlijs 2010 18:41:19
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Mad182 : 18 Jūlijs 2010 18:44:42
_________________
100% Microsoft free
guitarman : 18 Jūlijs 2010 18:56:39
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Mad182 : 18 Jūlijs 2010 18:58:06
_________________
100% Microsoft free
guitarman : 18 Jūlijs 2010 19:06:03
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Mad182 : 18 Jūlijs 2010 19:07:33
_________________
100% Microsoft free
guitarman : 18 Jūlijs 2010 19:11:11
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Mad182 : 18 Jūlijs 2010 19:12:15
_________________
100% Microsoft free
guitarman : 18 Jūlijs 2010 19:17:52
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Creep : 18 Jūlijs 2010 19:18:08
Mad182 : 18 Jūlijs 2010 19:19:46
_________________
100% Microsoft free
Creep : 18 Jūlijs 2010 19:22:45
guitarman : 18 Jūlijs 2010 19:22:48
if (isset($_POST["submit"])) {
$username = trim(addslashes($_POST["username"]));
$password = trim(addslashes($_POST["password"]));
$hashed_password = sha1($password);
$result_username = mysql_query("SELECT * FROM users WHERE username = '$username' ");
$result_password = mysql_query("SELECT * FROM users WHERE password = '$hashed_password' ");
if (mysql_num_rows($result_username) == 0) {
echo "Šāds lietotājs neeksistē";
}
elseif (mysql_num_rows($result_username) == 1 && mysql_num_rows($result_password) == 0 ) {
echo "Nepareiza parole";
}
else {
$lcode1 = rand(11111111,99999999);
$lcode2 = $hashed_password;
$login_code = $lcode1.$lcode2;
mysql_query("UPDATE users SET login_code = '$login_code' WHERE username = '$username' AND password = '$hashed_password' ");
$result = mysql_query("SELECT * FROM users WHERE login_code = '$login_code' ");
$row = mysql_fetch_array($result);
$login_code = $row["login_code"];
setcookie("troksnis", $login_code, time()+7200);
header("Location: index.php");
}
}
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
guitarman : 18 Jūlijs 2010 19:25:52
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
Creep : 18 Jūlijs 2010 19:28:39
Mad182 : 18 Jūlijs 2010 20:10:32
_________________
100% Microsoft free
root : 18 Jūlijs 2010 20:24:49
_________________
#IP Over Avian Carriers
#Every language has an optimization operator. In C++ that operator is ‘//’
guitarman : 18 Jūlijs 2010 20:34:28
_________________
Mana ģitārmūzika: draugiem.lv/rolandsbrazis
Un iekš yūtūba: http://www.youtube.com/user/rolandsbrazis
root : 18 Jūlijs 2010 20:53:48
_________________
#IP Over Avian Carriers
#Every language has an optimization operator. In C++ that operator is ‘//’
Mad182 : 18 Jūlijs 2010 21:12:20
_________________
100% Microsoft free
Creep : 19 Jūlijs 2010 14:59:47
$lcode2 = $hashed_password;
$login_code = $lcode1.$lcode2;
mysql_query("UPDATE users SET login_code = '$login_code' WHERE username = '$username' AND password = '$hashed_password' ");
$result = mysql_query("SELECT * FROM users WHERE login_code = '$login_code' ");
$row = mysql_fetch_array($result);
$login_code = $row["login_code"];
setcookie("troksnis", $login_code, time()+7200);
Nesapratu, kur jūs izrāvāt, ka paroles hašs tiek glabats kūkijos? Šeit tiek ģenerēts random strings, kas arī tiek iemests datubāzē kā identifikācijas nummurs un tas ari tiek lietots kūkijam, viss ir bumbās. Cilvekam droši vien, ka galvu sajaucāt.
No otras puses piekritīšu Mad, daudz vienkāršāk to visu butu panākt ar sessijām...
http://php.net/manual/en/features.sessions.php
P.S. Ja gribi maksimālu drošību, tad uztaisi, lai, pieņemsim, reizi divās stundās tiek veikta veco kodu dzēšana no datubazes...
daGrevis : 19 Jūlijs 2010 16:55:35
_________________
Think of how stupid the average person is, and realize half of them are stupider than that. /George Carlin/
http://twitter.com/#!/daGrevis
http://last.fm/user/daGrevis
http://ask.fm/daGrevis
http://dagrevis.lv/