Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

Programovacie jazyky, rady, poradňa...
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

Zdravicko mam web na tento web chodia uzivatelia zaregistruju sa prihlasia sa atd... heslo ukladam do .txt suboru (mimo domeny t.j. k subdomene)... cez .htpasswd a .htaccess zablokujem pristup k priecinku kde sa ukladaju hesla... ale nasli sa ludia ktory nasli tento subor a neviem akym zazrakom zmenili hesla vsetkym uzivatelom.... Preto sa pytam ak nemám databázu existuje nejaký lepší spôsob ako a kam zapisovať hesla hlavne bezpecne... Ďakujem.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

ono ani zapisovanie do súboru nemusí byť nebezpečné. Ak sa ti k tomu niekto dostal a zmenil to, tak si mal niekde bug alebo pozná údaje na tvoje ftp. Pokiaľ to spravíš bezpečne, kľudne tie hesla môžu byť na serveri v txt súbore. Ale minimálne by si ich mal ukladať v nejakom hashi, a nie ako plaintext
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:ono ani zapisovanie do súboru nemusí byť nebezpečné. Ak sa ti k tomu niekto dostal a zmenil to, tak si mal niekde bug alebo pozná údaje na tvoje ftp. Pokiaľ to spravíš bezpečne, kľudne tie hesla môžu byť na serveri v txt súbore. Ale minimálne by si ich mal ukladať v nejakom hashi, a nie ako plaintext
Ďakujem za rýchlu a stručnu odpoveď pokúsim sa nájsť niekde návod a informácie ako to vlastne funguje... :plus:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

no proste to do súboru neuložíš ako text, ale ako md5($heslo). Čiže ak sa k tomu aj niekto dostane, neprečíta heslo ale iba jeho hash. A pri prihlasovaní taktiež budeš overovať či tento hash sa rovná md5($vstup_od_uzivatela)

a návod asi nenájdeš, lebo ukladanie hesiel do súboru robíš asi len ty. Jediný na svete :) Všetci ostatní na to používajú databázy.
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:no proste to do súboru neuložíš ako text, ale ako md5($heslo). Čiže ak sa k tomu aj niekto dostane, neprečíta heslo ale iba jeho hash. A pri prihlasovaní taktiež budeš overovať či tento hash sa rovná md5($vstup_od_uzivatela)

a návod asi nenájdeš, lebo ukladanie hesiel do súboru robíš asi len ty. Jediný na svete :) Všetci ostatní na to používajú databázy.
http://www.soom.cz/clanky/1121--Hashova ... ashing-API
toto je asi ono ci?
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:áno
hej hej lenze to je tak vysvetlene ze tomu nerozumiem... prosim ta ak zapisujem cez file_put_contents akym sposobom to hashnem?

Kód: Vybrať všetko

$file = 'people.txt';
$person = "$_POST[cislo]";

file_put_contents($file, $person);
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

Kód: Vybrať všetko

$file = 'people.txt';
$person = "$_POST[cislo]";

file_put_contents($file, password_hash($person, PASSWORD_DEFAULT));
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:

Kód: Vybrať všetko

$file = 'people.txt';
$person = "$_POST[cislo]";

file_put_contents($file, password_hash($person, PASSWORD_DEFAULT));
no moze to byt kludne aj takto a vypada to krajsie...

Kód: Vybrať všetko

 if(isset($_POST['ok'])){
  if(isset($_POST['cislo'])){

$password = hash("sha512", $_POST["cislo"] . "n3j@ky$alt");


$file = 'people.txt';
file_put_contents($file, $password);

  }
 }
otazka ostava ako overit hash? tzv. heslo zapisane v subore (hashnute) s heslom ktore zadam pri prihlasení...

Kód: Vybrať všetko

$homepage = file_get_contents('people.txt');
echo $homepage;
trebars vypis hashnuteho hesla... ako ho overim? :cry: inak dakujem za info... :plus:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

veď si spravíš rovnaký hash, ako si spravil tu:

Kód: Vybrať všetko

hash("sha512", $_POST["cislo"] . "n3j@ky$alt");
len namiesto $_POST["cislo"] bude vstup ktorý pošle z formulára a overíš to s tým $homepage
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:veď si spravíš rovnaký hash, ako si spravil tu:

Kód: Vybrať všetko

hash("sha512", $_POST["cislo"] . "n3j@ky$alt");
len namiesto $_POST["cislo"] bude vstup ktorý pošle z formulára a overíš to s tým $homepage
aha aha a ked chcem spravit trebars viac tychto hashov...
tak druhy bude vypadat takto?

Kód: Vybrať všetko

$heslo = hash("sha512", $_POST["premena"] . "n3j@ky$alt");
a n3j@ky$alt zmenim na nieco ine? alebo mozem pouzivat rovnaky hash na viac hesiel alebo citlivych udajov...?
a naposledy ked uz nieco hashnem znovu sa to neda zmenit na normalny text? Ďakujem :plus:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

nie je to hash, ale salt. Môžeš použiť rovnaký, aj iný. Nie je to podstatné. Dôležité je pamätať si ho (na ktoré heslo si použil aký, preto je lepšie používať rovnaký na všetky) a držať ako súkromné tajomstvo teda nikde nezapisovať.
K druhej otázke či sa to dá znova zmeniť na text - áno aj nie. Záleží od hashového algoritmu aký použiješ. Konkrétne pre sha512 čo tam máš sa spätne text nedá získať, preto musíš len overovať hashe (uložený, a vypočítaný zo vstupu) či sú rovnaké. Ak áno, tak sú rovnaké aj heslá.
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:nie je to hash, ale salt. Môžeš použiť rovnaký, aj iný. Nie je to podstatné. Dôležité je pamätať si ho (na ktoré heslo si použil aký, preto je lepšie používať rovnaký na všetky) a držať ako súkromné tajomstvo teda nikde nezapisovať.
K druhej otázke či sa to dá znova zmeniť na text - áno aj nie. Záleží od hashového algoritmu aký použiješ. Konkrétne pre sha512 čo tam máš sa spätne text nedá získať, preto musíš len overovať hashe (uložený, a vypočítaný zo vstupu) či sú rovnaké. Ak áno, tak sú rovnaké aj heslá.
aha takze cez sha512 sa da len overovat a cez aky sa da aj citat? a vlastne naco sluzi toto? n3j@ky$alt
a vlastne to sha512 mam drzat ako sukromne tajomstvo?
Pytam sa primitivne otazky som si toho vedomi ale hladal som info a moc som toho nenasiel...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

napríklad base64 sa dá spätne dekodovať
n3j@ky$alt je iba náhodný reťazec ktorý si si zvolil (alebo zkopíroval príklad z nejakého návodu). Kľudne to môže byť ireTEuít/áý alebo čísla, alebo bodky a písmenka.. čokoľvek. Nejaký textový reťazec ktorý je ťažko uhádnuteľný. A práve toto je ten salt, ktorý si máš pamätať a uchovať ako súkromné tajomstvo (ak by si si to lepšie pozrel, n3j@ky$alt je napísané nejaky salt v haxor reči, čiže namiesto a je zavináč, namiesto e je trojka, namiesto s je dolár)
sha512 je iba názov algoritmu ktorým robíš hash. Je ešte napríklad md5, sha1, spomínaný base64 a plno iných
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:napríklad base64 sa dá spätne dekodovať
n3j@ky$alt je iba náhodný reťazec ktorý si si zvolil (alebo zkopíroval príklad z nejakého návodu). Kľudne to môže byť ireTEuít/áý alebo čísla, alebo bodky a písmenka.. čokoľvek. Nejaký textový reťazec ktorý je ťažko uhádnuteľný. A práve toto je ten salt, ktorý si máš pamätať a uchovať ako súkromné tajomstvo (ak by si si to lepšie pozrel, n3j@ky$alt je napísané nejaky salt v haxor reči, čiže namiesto a je zavináč, namiesto e je trojka, namiesto s je dolár)
sha512 je iba názov algoritmu ktorým robíš hash. Je ešte napríklad md5, sha1, spomínaný base64 a plno iných
aha aha dakujem dakujem... :plus: a cez ten base64 by ako vypadal priklad na dekodovanie? (vypisanie textu)
buchticka221
Medium Expert
Medium Expert
Príspevky: 120
Registrovaný: 09 jan 2013, 13:14
Bydlisko: Galanta

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

audiotrack napísal:base64_encode() na zakodovanie
base64_decode() na odkodovanie
:plus:
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

Príspevok od používateľa S-player »

Hashovať hesla za pomoci base64? Tak to snaď nie... to ich môžeš rovno nechať také aké sú - uložené ako plain text. Tiež by ma zaujímalo načo chceš tie heslať v pôvodnej forme, nevieš ako porovnať zadané heslo pri logine s tým uloženým? Keď ich chceš mať po ruke v takom stave v akom ich používateľ zadal tak použi aspoň AES.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

base64 v prvom rade ani nie je hashovacia funkcia.
buchticka, base64 encode/decode sa typicky používa pri kódovaní binárnych dát do tlačiteľných znakov. Nie je tam žiadna súvislosť s bezpečným ukladaním hesiel.

Hashovacie funkcie (md5, sha1, sha256 atď) sa používajú na to, aby som z jedného reťazca bajtov dostal nejaký iný, unikátny reťazec bajtov, ktorý ho jednoznačne reprezentuje. Vo všeobecnosti ale platí, že ten výsledok (tzv. hash) nie je možné v rozumnom čase previesť späť do pôvodnej podoby. Keď takto uložíš heslo, tak je v podstate "zašifrované" a nikto sa k pôvodnému heslu už nedostane (v ideálnom prípade) - tzn. neexistuje inverzná funkcia k hashovacej. Žiadne unmd5( md5("heslo") ) sa urobiť nedá.
To má výhodu, pretože k heslám užívateľov sa útočník nedostane, aj keď hackne databázu.
Urobíš teda toto:
Užívateľ sa zaregistruje, heslo zahashuješ a uložíš (takže uložíš napr. md5($heslo)). Tým pádom to heslo nikde uložené nie je a iba užívateľ vie, ktorý reťazec dá ten konkrétny hash (pretože pozná to heslo). Takže sa prihlási so svojím heslom a ty urobíš to isté if( md5($zadaneHeslo) == $hashZDatabazi ). Ak sa rovnajú, užívateľ zadal správne heslo, pretože vytvorilo rovnaký hash. Hashovacie funkcie zaisťujú to, že na toto môžeš spoliehať a hashe budú unikátne (Takže sa nestane, že niekto zadá iné heslo a vygeneruje to rovnaký hash)
(Kolízie zámerne nespomínam, netreba sa tým hneď zaoberať)

Soliť (salt) netreba (nie je to nutnosť) Robí sa to len pre posílenie šifry (umelé predĺženie, či iná transformácia hesla). Útočníkovi tým ešte viac znepríjemňuješ prácu.

A ešte posledná vec, aj databáza je len kopa súborov. Ak si súbory navrheš dobre, môžu ti ju pri menšom projekte plnohodnotne nahradiť. Len databáza je oveľa inteligentnejšia, rýchlejšia a zložitejšia kopa súborov, než akú ty kedy vymyslíš.

Takže súhrn:
- na ukladanie hesiel používaj hashovaciu funkciu (ideálne sha256 a viac) s prípadným solením.
- base64 nemá s heslami nič, nepoužívať!
- Všetko je súbor. Aspoň v unixe určite.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zabespečenie kam vkladať heslá uživ. ak nemám databázu?

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

S-player napísal:Hashovať hesla za pomoci base64? Tak to snaď nie... to ich môžeš rovno nechať také aké sú - uložené ako plain text. Tiež by ma zaujímalo načo chceš tie heslať v pôvodnej forme, nevieš ako porovnať zadané heslo pri logine s tým uloženým? Keď ich chceš mať po ruke v takom stave v akom ich používateľ zadal tak použi aspoň AES.
ja som nikde nenapísal že ich má hashovať cez base64. Ja som písal o base64 v kontexte hashovacích funkcií, a spomenul som ju ako jednu z mnohých. Ďalej sa to už len rozvíjalo lebo sa pýtal konkrétne na to, ktorá sa dá dekodovať a ako.

BX: je viacero definícii hashovacích funkcí. Do niektorých spadá, do iných nie.
Napísať odpoveď