- Megjött a jubileumi Pixel széria
- Xiaomi 14T Pro - teljes a család?
- Samsung Galaxy S25 - végre van kicsi!
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Magisk
- Apple Watch
- Drága bluetooth tagek olcsóbb alternatívái (MiLi MiTag, LiTag, OTAG, stb.)
- Azonnali mobilos kérdések órája
- Android alkalmazások - szoftver kibeszélő topik
- Ennyibe kerülhet a Xiaomi Watch S4 európai változata
Új hozzászólás Aktív témák
-
DNReNTi
őstag
válasz
tothjozsi96 #16502 üzenetére
A biztonságos beléptetés valamint főleg a felhasználói adatok biztonságos kezelése elég összetett dolog, írhatnék délig, mire leírom az egésszel kapcsolatban a véleményemet.
Mivel az idő az ellenségem, rövidre fogom. Ami már kiderült itt korábban is a felhasználói adatok sütiben tárolása a lehető legrosszabb megoldás, ha ráadásul még a jelszót is sütiben tárolod (ahogy korábban írtad) az pedig egyenesen kötél általi halált ér.
Leírom az én alap megoldásom, aztán majd a többiek kijavítják vagy kiegészítik, szerintem ez egy weboldal esetén megfelelően biztonságos:
A felhasználók az alap adataikon kívül regisztrációkor kapnak egy mondjuk 20 számjegy hosszú unique random számsort, amely adatbázisban a felhasználó táblában van rögzítve. Amikor a felhasználó a felhasználónév és jelszó párossal helyesen belép, akkor a $_SESSION[] változóban eltárolom ezt a random azonosítót. Innentől a böngésző bezárásáig ez alapján azonosítom a felhasználót. A számsor unique, szóval ugyan úgy használhatom erre a célra mint mondjuk az id-t. Ha lehetőséget adsz arra, hogy a felhasználó belépve maradjon, akkor ezt a számsort nyugodtan tárolhatod sütiben is, így amikor a felhasználó újra meglátogatja az oldalt, a süti tartalmát beállítod a session változóba és minden megy tovább ahogy eddig. Kilépéskor a sütit "lejáratod" a sessiont unset()-eled.Miért számsor és nem string?
Mert az SQL lekérdezés gyorsabb számszerű ekvivalenciára mint szöveges egyezésre.Miért jó ez megoldás?
Mert ha még valaki, valahogyan hozzá is jutna, ehhez az azonosítóhoz (pl. a sütiból), abban semmilyen logikai minta nincs, ami alapján a többi felhasználó azonosítója megszerezhető lenne.Hogyan lehet ez még biztonságosabb?
Ennek a level 2 változata, ha random azonosítót minden belépéskor generálod és mented el a felhasználóhoz, ez viszont félmegoldás, mivel ha a felhasználó miközben be van lépve, belép egy másik eszközről, akkor az eredeti munkamentét el fogja veszíteni.Hogyan akadályozható ez meg?
Egyszerűen, level 2 helyett egyből a level 3-mal. Ugyan úgy egyedi azonosítót generálsz belépéskor, de ezt már nem a felhasználó táblában, hanem egy külön a belépéseket kezelő táblában rögzíted. Fontos, itt nem elég csak a random azonosítókat és a felhasználó id-kat tárolni, az egyértelmű azonosítás érdekében környezeti változók mentésére is szükség van. Kilépéskor a tárolt munkamenet célszerű az adatbázisból eldobni, így nem lesz tele szeméttel, továbbá érdemes időközönként háttérfolyamattal takarítani, teszem azt mondjuk a 48 óránál régebbi munkameneteket eldobni.Röviden ennyi.
Aki nem ért egyet pls javítson ki.
Új hozzászólás Aktív témák
- Apple iPhone 13 Mini 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 16 128GB, Kártyafüggetlen, 1 Év Garanciával
- X1 Carbon 10th 14" 3K OLED i7-1260P 16GB 512GB NVMe ujjlolv IR kam gar
- Eladó komplett PC Ryzen 9 5900x RTX3080
- Latitude 5530 15.6" FHD IPS i5-1235U 16GB 256GB NVMe ujjolv IR kam gar
- GYÖNYÖRŰ iPhone 13 512GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3080, 100% Akkumulátor
- BESZÁMÍTÁS! ASUS TUF A620M R5 7600X 32GB DDR5 1TB SSD RX 6700 XT 12GB ZALMAN I3 NEO A-Data 750W
- HIBÁTLAN iPhone 12 mini 64GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS2036
- Bezámítás! Lenovo Legion 5 17ACH6H Gamer notebook - R7 5800H 16GB DDR4 512GB SSD RTX 3060 6GB WIN11
- Bomba ár! HP EliteBook 735 G6 - Ryzen PRO 5 I 8GB I 256GB SSD I 13,3" FHD I Cam I W10 I Gari!
Állásajánlatok
Cég: FOTC
Város: Budapest