Re: Mano Klausimai

bet dažniausia yra tikslas pailginti hash suradimą lentelėse tiek, kad paprasčiausia neapsimokėtų to daryti. Bet kokios druskos įdėjimas ar algoritmo modifikavimas - padaro standartines lenteles bevertėmis. Tad iškarto atpuola variantas, kad parsisiunčiu pora šimtų GB lentelių ir tada atkoduoju per 10 min.
Jei druska yra globali per visą aplikaciją, tai gali susigeneruoti lenteles visai aplikacijai ir nulauši visų vartotojų slaptažodžius. Jei druska dar papildomai kinta ir su kiekvienu įrašu, tai lentelių reikės skirtingų kiekvienam iš jų.
Jei vietoje sha1($string) padarai sha1(sha1($string)) - generuodamas lenteles tai turėsi padaryti ir tu, kas beveik padvigubina laiką generuojant lenteles. Jei viską parasuksi per ciklą takim 1000 kartų ir naudosi kiek įmantresnį algoritmą .... :)
Manau tokiu atveju 99,8% bandymų hash atkoduoti, būtų nesėkmingi, nes tiesiog per ilgai truktų. Yra aibė kitų būdų gauti norimą informaciją, tad greičiausia piktas dėdė pasirinks juos.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Mano Klausimai

Jei piktas dede prasibrove iki failu - viskas tu nudauztas galutinai (nes visus algoritmus jis jau mato).
Jei pitas dede tik nusiurbe db - na vilties dar yra kad pass neiskoduos, taciau pitas dede bus ir susikures acc ir jau zinos koks buvo pirminis variantas ir kas gaunasi uzkodavus (juo labiau labai piti dedes tiktrai gerai ismano apie kodavimus).

Siaip pries mastant apie "super sustrus" kodavimo algoritmus, reitu pirma ismokti tvarkingai rasyti coda nepaliekant zioplu saugumo spragu.

Re: Mano Klausimai

Na hash gali gauti per sql injection, nebūtinai turint prisijungimus prie db. Jei klaida leidžia tik sužinoti hash ir jį sunku atkoduoti - tai yra tai ką atlieka kriptografija.
Saugumas ir kriptografija yra du skirtingi dalykai. O kalba dabar pasisuko apie kriptografiją...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Mano Klausimai

Kas dėl "failų turėjimo" - žinojimo kokiu būdu yra užkoduoti slaptažidžiai, tai dažnai yra taip, kad tiesiog mes sužinom kokią atvirto/uždaro kodo sistemą naudojama, ir mums nereikia būtinai parsisiųsti failų iš to konkretaus puslapio - mes failus gali parsisiųsti iš sourceforge.net (-; Dar kitas dažnas atvejis, kai kažkokia kompanija gamina uždaro kodo TVS/framework, ir diegia tik į klientų serverius. Tai vėlgi - užtenka gauti failus iš vieno iš klientų, kad sužinotum, kokiu principu koduojamas slaptažodis pas kitą klientą.

Dar kitas dalykas, yra kai failai gaunami tik skaitymo būdu - t.y. gali skaityti failus ir jų turinį, bet negali niekur nieko įrašyti ir modifikuoti - tai čia dar nereiškia, kad "svetainei amen", nes net tokiu atveju turint viską teisingai sukonfigūruota ir kai nėra kitų saugumo spragų - svetainė lieka veikianti ir duomenys gali būt nepasiekiami.

Kas dėl druskos (salt) tai vėlgi, jeigu yra nežinoma kaip generuojama druska, tai yra vienas atvejis, jeigu žinoma tai kitas.
žinant kokiu būdu pridedama ir kokia "druska" crackinant passwordus tai praktiškai neprideda papildomo saugumo.
Nežinant prideda tiek pat kiek "sunkesnis" hash'as ar atitinkamo ilgio/sudėtingumo passwordas.

Visada yra riba, kai tau jokio skirtumo ar passwordus brute-force'ins 20min. ar 40., bet yra labai didelis skirtumas ar surasti passwordą užtruks 1d. ar 1000metų (-;

Mano patarimas - programuoti taip, kad jeigu kažkas turėtų jūsų visus programos source'us - negalėtų "nulaužti" veikiančios sistemos. Paprasta, bet kartu daugeliui ir sudėtinga užduotis. Taisyklė realiai apima visas kitas taisykės ar geras praktikas (-;

45

Re: Mano Klausimai

username.salt.password ?

Kiek maigyklių sudėvėjai ?

46 (edited by zygis 2011-07-01 15:21:12)

Re: Mano Klausimai

apsisaugoti nuo brute force galima baninant ip ar userį prie kurio bando prisijungti. Tai patikrinti 100 slaptažodžių vykdant žodynėlio ataką - gali užtrukti metus :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Mano Klausimai

zygis wrote:

apsisaugoti nuo brute force galima baninant ip ar userį prie kurio bando prisijungti. Tai patikrinti 100 slaptažodžių vykdant žodynęlio ataką - gali užtrukti metus :)

Gal tiesiog captcha naudot

Re: Mano Klausimai

captcha čia sprendimas tinkamas labiau kokiems komentarams ar pan, o ne vartotojų prisijungimui prie informacijos valdymo verslo sistemose :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Mano Klausimai

Ten kur kalbėjau apie brute-force aš visur turėjau omenyje hash'o bruteforce'inimą 'pikto dėdės' kompiuteryje, o ne kažkur online formos per http protokolą (-;

Kas dėl 'username.salt.password', tai čia 'username.salt' ir yra salt. Esmė, jeigu 'piktas dėdė' žino kaip sudaromas salt'as, ir jis jį gali įtraukti į bruteforce'inimo procesą tai tas salt'as jokio security neprideda. Kiekviename atviro kodo projekte gali sužinot kaip sudaromi salt'ai, jeigu jie sudaromi. Juokingiausia, kai kažkas prideda kažkokią tai ilgą konstantą, kurią sužinojęs 'piktas dėdė' neturi jokio vargo sužinot slaptažodžius (-;

Re: Mano Klausimai

minde wrote:

Ten kur kalbėjau apie brute-force aš visur turėjau omenyje hash'o bruteforce'inimą 'pikto dėdės' kompiuteryje, o ne kažkur online formos per http protokolą (-;

Oi :)

minde wrote:

Kas dėl 'username.salt.password', tai čia 'username.salt' ir yra salt. Esmė, jeigu 'piktas dėdė' žino kaip sudaromas salt'as, ir jis jį gali įtraukti į bruteforce'inimo procesą tai tas salt'as jokio security neprideda. Kiekviename atviro kodo projekte gali sužinot kaip sudaromi salt'ai, jeigu jie sudaromi. Juokingiausia, kai kažkas prideda kažkokią tai ilgą konstantą, kurią sužinojęs 'piktas dėdė' neturi jokio vargo sužinot slaptažodžius (-;

O tai koks tada būtų siūlymas? private public key? :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Mano Klausimai

zygis wrote:

O tai koks tada būtų siūlymas? private public key? :)

Iš SHA2 sesijos kažkas ir stiprus passwordas. Jeigu sistema svarbi tai papildomos priemonės (secondary auth), tokios kaip passwordų generatoriai ir pan.

Re: Mano Klausimai

Salt'o nauda "tik tiek", kad standartinės vaivorykštės nebepadės. Jei laužiasi koks vaikis, to turėtų pakakti :) Iš ilgo salto naudos būna, kai blogas dėdė gauna priėjimą tik prie SQL (pvz kreivas hostingas, kuri visi vartotojai gali skaitytui visų DB) :/

Jei kalba eina apie visokias PlayStation lygio sistemas, nemanau kad vartotjojų spaltažodiai išvis turėtų būti laikomi tame pačiame serveryje. Viską perkėlus į atskirą dėžę, tik su būtiniausiais paketais bei griežta ungiasiene, kai tokia sistema grąžina tik true/false, tinkamo ar netinkamo passwordo atveju, nujoti passwordus jau būtų arti neįmanomo :) Tik mažiems projektams tokie fokusai per sudėtingi, dideli ant visų dėję, nes jie dideli :D


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: Mano Klausimai

del preg_replace:

$html = '<div id='am'>[cia daug kitu tagu ir t.t]</head>';
echo preg_replace('#<div id='am'>.*</head>#','',$html);

Turetu istrint tuos tagus ir kas juose yra , bet neistrina.
Kame beda?

Re: Mano Klausimai

Avice wrote:

del preg_replace:

$html = '<div id='am'>[cia daug kitu tagu ir t.t]</head>';
echo preg_replace('#<div id='am'>.*</head>#','',$html);

Turetu istrint tuos tagus ir kas juose yra , bet neistrina.
Kame beda?

preg_replace() funkcija grąžina NULL jeigu nepacyko nieko rast pakeitimui, manau tavo atveju taip ir turėtų būt, nes pattern'o eilutėje tiek viduje tiek išorėje naudoji viengubas kabutes - tau iš vis turėtų mesti sintaksės klaidą, kad bloga eilutė.

Re: Mano Klausimai

Aš čia tik kaip pavyzdį daviau ir jau išsisprendžiau šia problema.

$html = <<<END html kodas....  END;
....

Re: Mano Klausimai

Taigi noriu pasidaryt "watermark" su GD.
Pasidariau taip:

header('Content-Type: image/jpg');
$wk = imagecreatefrompng('PNG Paveikslelis');
$img = imagecreatetruecolor(14, 14);
$img = imagecreatefromjpeg("Paveikslelis");
$dest_x = $size[0] - $watermark_width - -105; 
$dest_y = $size[1] - $watermark_height - -130;
imagecopymerge($img, $wk, $dest_x, $dest_y, 0, 0, 14, 14, 100);
imagejpeg($img);  
imagedestroy($img);  
imagedestroy($wk);
?>

Viskas veikia puiktiai tik viena bedele "$wk = imagecreatefrompng('PNG Paveikslelis');" yra su baltu fonu , nors turetu but be fono [permatomas fonas].
Taigi ka blogai darau?

57 (edited by skuelas 2011-09-02 19:00:18)

Re: Mano Klausimai

Avice wrote:

Taigi noriu pasidaryt "watermark" su GD.
Pasidariau taip:

header('Content-Type: image/jpg');
$wk = imagecreatefrompng('PNG Paveikslelis');
$img = imagecreatetruecolor(14, 14);
$img = imagecreatefromjpeg("Paveikslelis");
$dest_x = $size[0] - $watermark_width - -105; 
$dest_y = $size[1] - $watermark_height - -130;
imagecopymerge($img, $wk, $dest_x, $dest_y, 0, 0, 14, 14, 100);
imagejpeg($img);  
imagedestroy($img);  
imagedestroy($wk);
?>

Viskas veikia puiktiai tik viena bedele "$wk = imagecreatefrompng('PNG Paveikslelis');" yra su baltu fonu , nors turetu but be fono [permatomas fonas].
Taigi ka blogai darau?

imagealphablending($img, true);
imagesavealpha($img, true);
http://php.net/manual/en/function.image … rompng.php
http://lt.php.net/imagecolortransparent
http://lt.php.net/imagesavealpha

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

58

Re: Mano Klausimai

@Avice
tavo klausimai, bet apie watermark google daugiau žino, nei čia gali paklausti, gi visvien pateikei sau atsakymą, kad balti fonai :)

Kiek maigyklių sudėvėjai ?

59 (edited by Avice 2011-12-06 18:27:51)

Re: Mano Klausimai

Naujas klausimas , kaip padaryt jog funkcijoje veiktu superglobalus kintamasis?
pvz.:

function get($i) {
return filter($_GET[$i]);
}
echo get('test');

Error: Can't use function return value in write context.

Re: Mano Klausimai

bet $_GET[$i] neveikia meta tokia klaida:

Can't use function return value in write context.