ugrás a tartalomhoz

jelszó titkosítás

szobek · 2013. Jan. 10. (Cs), 11.36
Sziasztok!

Egy olyan kérdésem lenne, hogy a weblapon amit csinálok, szeretném a jelszavakat kódolva tárolni. Viszont az md5() és sha1() eléggé elavult és simán visszafejthető.
Kitaláltam valamit és a véleményeteket kérném:
		
function pass_sajat($post_pass) {
			$mirol = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
			$mire = array('1','27','39','41','84','22','19','85','4','7','21','85','54','39','87','10','60','94','8','11','73','57','79','29','39','45','19','33','74','62','50','12','82','32','77','5','80','66','3','82','43','18','31','40','15','59','20','28','93','81','52','8','5','7','2','1','4','8','3','6','0','9');
			$pass_new = str_replace($mirol, $mire, $post_pass);
			return md5($pass_new);
		}
A postolt jelszót amit leellenőriztem, hogy csak angol ABC kis és nagybetűk illetve számok lehetnek, beküldöm ebbe a kódba és az így készült kódot tárolom és ellenőrzöm. Ennek van értelme vagy felesleges programlassítás?


A válaszotokat előre is köszönöm!

Norbi
 
1

Ajjaj

janoszen · 2013. Jan. 10. (Cs), 11.50
Maradjunk annyiban, hogy vagy tanuld meg a kriptografiat rendesen vagy ne probald meg ujra feltalalni a kereket, mert csak rontasz a helyzeteden.

A kurrens jelszotitkositasi technologia a kovetkezo keppen nez ki:

  1. Generaljunk a felhasznalora egyedi random stringet es taroljuk el plaintextben (ez a so).
  2. A jelszot es a sot tegyuk egy stringbe, majd taroljuk el egyiranyu titkositassal titkositva (md5, sha1).


A "siman visszafejthetotol" mindketto messze van, a leggyakoribb tamadas a rainbow table, amit viszont a sozas megold.

A titok nyitja az, hogy ha valaki megszerzi az EGESZ programkododat, akkor se tudjon tobbet artani a programodnak, mint ha nem tudja. A Te kodod pedig ezen egyertelmuen elbukik.
10

A kurrens jelszótitkosítási

tgr · 2013. Jan. 11. (P), 23.38
A kurrens jelszótitkosítási technológia úgy néz ki, hogy konfigurálható futásidejű hashfüggvényt (pl. bcrypt) használsz md5/sha1 helyett.
2

Köszi az infót. Valóban nem

szobek · 2013. Jan. 10. (Cs), 12.24
Köszi az infót. Valóban nem értek hozzá sajnos... Nos próbáltam úgy is, hogy a felhasználói táblában regisztrációkor generáltam egy 6 karakteres kódot. ha ezzel "sózom" meg akkor az többet ér? Mert gondoltam azt amit leírtam fentebb, nem túl egyszerűen fordítható vissza.
Szóval akkor marad a "só".

Ja és még egy: Mennyire hatásos, ha a login oldalon egy session-nel számolom a belépési próbákat és 3 hiba után letiltom a fiókot?

Köszi a választ!
3

Lehet

janoszen · 2013. Jan. 10. (Cs), 14.23
Ami a sozast illeti, kb tok mindegy mivel sozod, csak felhasznalora egyedi legyen. Lehet a userneve is. A jelszo ellenorzesre persze szukseged van a sora.

Lehet letiltani a fiokot, de gondolj bele: ha valaki szerez egy csomo account nevet (mondjuk egy forumnal) akkor az osszes usert le tudja tiltani.

En a helyedben olyasmit csinalnek, hogy 1 perc alatt 5 probalkozast lehet maximum. Ez pont eleg ahhoz, hogy meggatolja a feltoresi kiserleteket, de nem szivatja a normal usert. Ezt tovabb fokozva lehet olyat, mint amit a Google csinal, hogy 5 probalkozas utan kiraksz egy Captchat.
8

Lehet magasabb is, a feltörés

Joó Ádám · 2013. Jan. 10. (Cs), 15.34
Lehet magasabb is, a feltörés esélyét nem növeli jelentősen, de egy-egy régi fióknál vagy bonyolult jelszónál könnyű túllépni az öt próbálkozáson. A sikertelen belépési kísérletek sora önmagában is eléggé frusztráló, a tiltás csak tovább rontja a felhasználó kedvét.
11

Így is letilthatja

Pepita · 2013. Jan. 12. (Szo), 15.11
En a helyedben olyasmit csinalnek, hogy 1 perc alatt 5 probalkozast lehet maximum.
Tekintve, hogy valószínűleg sok Júzert akar letiltani, ír egy minirobotot, az pedig tutti, hogy 1 perc alatt lenyom legalább pármillió próbálkozást... Szóval szerintem nem jó a letiltás, de a captcha igen.
4

hasznos, mert ha pistit meg

szabo.b.gabor · 2013. Jan. 10. (Cs), 14.29
hasznos, mert ha pistit meg akarom szívatni, akkor elég háromszor megpróbálnom belépni a nevében. (:

hasznos, mert a törő script-ek ha nem küldenek cookie-t, akkor náluk nem lesz sosem több a számláló 1-nél. (:

a lényeg, hogy lelassítsd a törés folyamatát. egy helyről csak mondjuk 3 másodpercenként engedélyezz egy felhasználónév / jelszó ellenőrzést. ugye ez sem triviális, mert ha mondjuk ip alapján szűrsz, akkor proxy mögötti júzerek rosszul járhatnak, meg ehhez adatbázis is kell. de ha felhasználónév alapján szűrsz akkor az már jó is lehet (mondjuk egy lastloginattempt mező az adatbázisban).

megcsinálhatod, hogy csak olyan embereknek engedélyezed a logint, akiknek már van vmi session változójuk (mondjuk a kezdőlapon beállítod), ez mondjuk egy timestamp-et tárol, ha ez nem elég öreg akkor akár egy sleep() vagy bármi lassít egy kicsit a folyamaton. persze egy gépről egy script ekkor is küldhet több párhuzamos kérést, különböző session cookiekkal, de így legalább nem kell adatbázis.

vannak böngésző lenyomatok is, amik jól jöhetnek azonosításhoz.

szóval mérlegelni kell, aztán választani.

mindenesetre én fiókot nem tiltanék, max IP-t de azt sem biztos.
5

Az ötlet egyébként nem akkora

eddig bírtam szó nélkül · 2013. Jan. 10. (Cs), 14.35
Az ötlet egyébként nem akkora marhaság: a legtöbb op.rendszeren pl. van ilyen lehetőség, még ha nem is használják...
Én simán tiltanék usert is, de vagy nem végleg, hanem néhány percre, vagy olyan megoldással, hogy viszonylag gyorsan elérhető ügyfélszolgálatot állítok a szolgáltatás mögé, ahol a user kérheti a tiltás feloldását. De ugye ez utóbbi már a pénzügyi és hasonló kategóriájú szolgáltatók szintje, ahol telefonos pin kódot is lehet használni... ;-)
6

Tehát akkor felesleges a

szobek · 2013. Jan. 10. (Cs), 15.18
Tehát akkor felesleges a tiltás mert csak másokat szivathatok meg vele? Azért elég elkeserítő, hogy az embereknek egyből a mások szivatása jut eszébe... Mármint nem rátok értem hanem általában.. De azért köszi a válaszokat :)

Ja és még annyi, hogy mikor letiltom a fiókot, automatikusan megy egy feloldó mail melyben egy véletlenszerűen generált azonosítót küldök el, ezt tárolom az usernél, és ha ez a 2 megegyezik a feloldó programban, akkor oldja fel a fiókot, itt tud beállítani új jelszót az user. De ha ez tényleg nem jó akkor törlöm az oldalról..
7

nem felesleges, csak gondold

szabo.b.gabor · 2013. Jan. 10. (Cs), 15.34
nem felesleges, csak gondold át, hogy tényleg véd-e a megoldásod, valamint tényleg szükség van-e ilyesmire?
9

A védelem arról szól, hogy

eddig bírtam szó nélkül · 2013. Jan. 10. (Cs), 15.46
A védelem arról szól, hogy egyeseknek "mások szívatása" jár a pici fejében és ez ellen tenni kell. ;-)
12

Nem felesleges

Pepita · 2013. Jan. 12. (Szo), 15.19
- CSináld úgy, hogy a felhasználóbarátság még megmaradjon, akkor nem felesleges. Pl. ez az e-mailes feloldás már egész tűrhető.

- A mások szivatása: gondolj arra, hogy ha ez pl. webshop lenne, akkor meg ingyen akarnának vásárolni... Szóval a lehetőségét kell elvenni a gazemberkedésnek, és akkor nem fognak szivatóra venni. Ha belegondolsz, elég neked egy genyó, és bebukod az összes látogatódat...
13

Sziasztok! Hát végig

szobek · 2013. Feb. 1. (P), 12.08
Sziasztok!

Hát végig gondolva a hozzászólásokat, úgy döntöttem, hogy maradok az egyszerű beléptetésnél, az sha1() titkosításnál és elkezdem tanulni a session kezelést kicsit profibban. Azaz egy felhasználó csak akkor jelentkezhet be, ha jelenleg nem fut másik session az ő azonosítójával másik Ip címről. Szóval irány a suli!

Köszi mégegyszer
14

Helyes

Pepita · 2013. Feb. 1. (P), 14.10
Az IP jó, mindenképp nézni kell. Ezen kívül lehet jó még egy kis time-limit, pl. két kérés közt max. 10 perc. Ha több, logout. Olyan oldalakon, amelyik használatához kevés ez az idő, ott ajax-al frissítheted az ellenőrzést, így mondjuk újra 10 perc. Persze ez egy részletesebb tárgyalást igényelne, nem ilyen egyszerű.

Szerintem hasznos még - de nem túl felhasználóbarát -, ha a session-sütid lejár a böngésző bezárásakor.
15

Az időkorlátra is gondoltam,

szobek · 2013. Feb. 1. (P), 16.59
Az időkorlátra is gondoltam, de ez a session lejárat még nem teljesen világos nekem, hogy mikor jár le. Tehát hogyan lehet beállítani. Gondolom valami php.ini-s megoldás vagy .htaccess-es de most kezdek el egy sulit, talán majd valamikor kioktatnak. Persze addig is tanulok innen-onnan és eddig mindig sikerült megoldanom a problémáimat, de ha pár szóban elmondanád a lényegét azt megköszönném.

Szobek
16

Amikor a süti

Pepita · 2013. Feb. 1. (P), 17.45
Feltételezve, hogy süti-alapú sessiont használsz.
Nézz utána a kézikönyvben:
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure]]] )
Itt a $lifetime a süti élettartama, ha 0 (nulla), akkor törlődik a böngésző bezárásakor. Addig viszont megmarad, tehát neked kell gondoskodnod mindig az előző kérés és a mostani között eltelt idő kiszámolásáról. Ez két külön dolog.
Szerk.:
Mielőtt ilyesmit csinálsz, olvasd el az itteni cikkeket a témában, valamint mindent a Manualból, amiben szerepel a session szó.
17

Hát igazából a sessionökkel

szobek · 2013. Feb. 1. (P), 18.33
Hát igazából a sessionökkel való tudásom eddig annyiban merült ki, hogy session_start() majd megadtam az értékeket, pl: nick, felhasználói szint, id, stb. aztán session_write_close(). Szóval nem nagyon mélyültem el benne, de most nemrég kezdtem el foglalkozni az olyan dolgokkal, mint az általam generált session. Viszont ennyiben ki is merült a tudásom. Hát akkor tanulásra fel :) Köszönöm a válaszodat, remélem lassan sikerül komoly rendszereket is építenem, hisz ez lesz majd a vizsgafeladat :)

Szobek
18

Szívesen

Pepita · 2013. Feb. 2. (Szo), 09.42
Ha jól kitanultad a fájl alapú sessiont, akkor érdemes továbblépni adatbázis felé. Olyankor csak egy azonosítót tartasz session-változóban, az adott szál adatait meg adatbázisban. De előbb legyél teljesen tisztában a "simával".

Figyelj oda tanulás közben, hogy a session-süti nem az adatokat tárolja, azok a szerveren fájlban vannak.
19

Tipp

Pallosi Péter · 2013. Feb. 2. (Szo), 11.51
Adnék egy kis tippet igaz nem a webfejlesztés a szakterületem,de volt mostanában egy kis kutatásom.

Dns-t próbáltuk utánozni pythonnyelven történt az egész.
97%ban sikeresen feltudtuk törni a weblapot.

Igaz úgy volt megírva a honlap,hogy könnyű legyen a dolgunk.
Tehát alapvető hibákat követtünk el 0 sql védelem semmi hiba kezelés.

Utána felmentem a kollégiumba és elkezdtem tervezni gőzerővel és én is eljutottam odáig,hogy nem lehet egy picit elavult már md5 és a többi hasonló függvény.

Akkor elkezdtem visszafejteni a kódokat hááááát nem volt a legkönnyebb dolog.
Saját függvényt is írtam és azt se volt könnyű visszafejteni így arra jutottam,hogy md5re teszem le a voksom és akkor jöhet az adatbázis ott volt segítségem mert nem nagyon értek hozzá.

Következő lépésem az volt,hogy a hibákat kezeljem tehát sql befecskendezést után egyből tiltás dns behatolás tiltás semmiféle php,sql kódot nem engedtem futtatni a weblapon.

Ebből azt szűrtem le,hogy nem muszáj a legdurvább rendszert kiépíteni ugyan úgy feltörhető,ha időt fordítasz rá,de gondolom pont nem a te honlapodat fogják megszállni Hackerek.
20

Ezt a DNS-t részletezhetnéd

eddig bírtam szó nélkül · 2013. Feb. 2. (Szo), 13.48
Ezt a DNS-t részletezhetnéd picit, mert nem teljesen tiszta, hogy mit is csináltatok, hogy függ össze a weblap védelmével.

Az MD5-tel az a gond, hogy mai hardvereken (lásd némely nVidia VGA például) brute force-szal is törhető elfogadható idő alatt (állítólag).
Ez persze csak akkor okoz gondot, ha valaki egyszer bejutott és hozzáfért a hash-hez.
27

Az MD5-tel az a gond, hogy

tgr · 2013. Feb. 4. (H), 19.48
Az MD5-tel az a gond, hogy mai hardvereken (lásd némely nVidia VGA például) brute force-szal is törhető elfogadható idő alatt (állítólag).

Meg a SHA1 is.
21

OFF

Pepita · 2013. Feb. 2. (Szo), 16.02
Ne haragudj, de ez ebben a témában egy totál offtopic, a kérdező kérdéséhez egyáltalán nem kapcsolódik, illetve nem nyújt neki semmilyen használható infót.

Én elhiszem, hogy le akarod írni, hogy mit csináltatok python-órán, de akkor légyszi tedd ezt meg egy blogban vagy egy új fórumtémában. És írd meg rendesen, mert ebből én sem tudom kitalálni, mit is csináltatok.

(Kicsit úgy tűnik, hogy talán fejedbe szállt a "mérnöki gondolkodás". Nem ez az egyetlen haszontalan kommented ma...)
22

offabb

eddig bírtam szó nélkül · 2013. Feb. 2. (Szo), 16.10
Hálás lennék, ha továbbiakban nem játszanád az önkéntes rendőrt. Nem tudom, mások hogy vannak vele, engem kezd egyre jobban irritálni. Pláne, hogy most nincs is igazad.
23

Vélemény

Pepita · 2013. Feb. 3. (V), 18.42
Ne tiltsd meg - ha kérhetem -, hogy leírjam a véleményem. Mint ahogy te is ideírtad a tiéd. Neked nincs (sincs?) igazad.

Majd ha esetleg olyat írok, amit nem szabad, akkor Ádám vagy János vagy más kimoderál - nem te.
24

Amit leírtál, az szimpla

eddig bírtam szó nélkül · 2013. Feb. 3. (V), 18.56
Amit leírtál, az szimpla baszogatás volt semmi több. És nem először.
25

Ennek a szálnak itt vessünk

Joó Ádám · 2013. Feb. 3. (V), 20.49
Ennek a szálnak itt vessünk véget, mindketten gondolkodjatok el azon, amit a másik írt.
26

bcrypt

joed · 2013. Feb. 4. (H), 16.20
A Zend\Crypt támogatja a bcrypt és scrypt módszereket is. Csak ajánlani tudom, mielőtt belekezdenél saját kriptográfiai eljárásokat kitalálni.