session: felhasználó név+jelszó tárolása, rövid webcímek
Sziasztok!
Sessionban, vagy sessionhoz rendelt táblában érdemesebb a jelszó, felhasználó név páros, illetve bejelentkezettség állapotát tárolni?
Hogy oldható meg a munkamenet továbbadása a rövid webcímeknél, ha böngésző letiltotta a süti használatát?
■ Sessionban, vagy sessionhoz rendelt táblában érdemesebb a jelszó, felhasználó név páros, illetve bejelentkezettség állapotát tárolni?
Hogy oldható meg a munkamenet továbbadása a rövid webcímeknél, ha böngésző letiltotta a süti használatát?
is-is
bejelentkezett elég, ha csak azt tárolod. A jelszót egyébként sehol ne
tárold. Amit tárolni érdemes az egy ujjlenyomat a jelszórol jól megsózva. :-)
A sütik használatát meg nem érdemes letiltani. Ez picit olyan, mintha
kikapcsolnád a javascript-et vagy a flash plugint.
nem használható?
Pont ellenkezőleg! Nem én tiltom le a sütiket. Tegyük fel, hogy felhasználó saját maga kapcsolja ki, akkor nem tudom azonosítani és továbbadni az adatait. Ezzel kilőtte a sütiket, én meg a rövid webcímekkel a PHPSESSID továbbadását. :-(
Kipróbáltam itt a weblaboron, letiltottam a sütiket, és meglepődve tapasztaltam, hogy nem tudok belépni. Azt hittem a háttérben valahogy át lehet adni a munkamenet azonosítót. Tehát, akkor rövid webcímes megoldásnál (és kikapcsolt süti támogatásnál) nem használható a munkamenet továbbadása???
az md5 egy hash fv
tördelőfüggvénynek is szokták mondani. A lényeg, hogy a bemenetet mindig egy
fix hosszúságú kimenetre képezi le, md5 esetén asszem 128 bit, és úgy, hogy visszafele ne működjön a dolog. Magyarul nem tudod visszafejteni. Vannak
más hash függvények is, pl sha1.
Jelszó "tárolásra" ez önmagában viszont nem jó megoldás. Az igaz, hogy
nem lehet visszafejteni, de nem is akarjuk. Inkább fogunk egy szótárat,
leképezzük az összes elemének a hash kimenetét, és összehasonlítjuk a
"tárolt" jelszó hash-ével, és máris tudjuk mi volt a jelszó.
Ennek a kivédésére egy jó megoldás az úgynevezett sózás. Arról van szó,
hogy a hash amit tárolunk nem a jelszó hash-e, hanem a jelszó hash meg egy
véletlen kiválasztott karaktersorozat hash egy részének konkatenálásból
előállított karaktersorozat.
Íme néhány remek példa:
átadni a munkamenetet, sajnos nem tudom a választ.
Aki tudja írja meg, mert engem is érdekel!
Én egyébként nem szoktam ezzel foglalkozni, nem készülök fel arra az
esetre, ha a user kikapcsolja a sütiket. legalább is nem így.
jano82
Nem akarok kötekedni
üdv. krey
én sem akarok kötekedni, de ... :-D
elnézést fogok kérni.
Egyébként ez volt kéznél, és nagyon szemléletes, azért ezt írtam.
A python egy nagyon beszédes nyelv, ebből a pár sorból az elvet
simán meg lehet érteni.
Azt meg ne várja senki, hogy kész php kódot illesztek be ide, amit
ctrl-c ctrl-v módszerrel bemásol a saját kódjába és működik.
szerintem nem kell sessionba zsúfolni mindent...
Rövid URL-ben is át lehet adni a Session-t, de semmi értelme, mert akkor már nem nagyon lesz rövid :), +szép és +értelmes az-az URL... Ha ilyet akarsz akkor ne gondolkodj rövid URL-ben. (Viszont elvileg elgondolkodtató, hogy mennyire törékeny is ez az egész webes fejlesztés...de ez csak margóra.)
Letiltósdi játék:
Aki letiltja a JavaScript-et vagy a sütiket az bizonyosan okkal teszi és rendelekezik a megfelelő indokkal, (plusz hozzáértéssel) tehát: számol a következményekkel (pl. nem lesz elérhető számára egy csomó lehetőség, szolgáltatás). Ez legyen az ő gondja. Fel kell tüntetni az oldalon, hogy a letiltásnak mi a hozadéka, +mik a működési feltételek stb.
elérhetőség
Üdv,
Felhő
hash a javascriptből
Tegyük fel:
Van egy megbízható munkamenetkezelés.
Ennek egyik eleme egy véletlenszerű karaktersorozat. Ezt megkapja a bőngésző is és a sessionban is tárolva van.
Van egy javascript függvény ami:
- bejelentkezéskor a password mezőbe beírt jelszót ezzel a karatkersorozattal eltorzítja valami XOR alapú algoritmussal, majd ennek a hash értékét küldi el a szervernek
- a szerveren a felhasználóhoz tárolt jelszót ugyanígy kezeli majd hasonlítja össze a kapottal
hátránya:
- az adatbázisban tárolnom kell az eredeti jelszót (esetleg visszafejthetően titkosítva)
előnye:
- a vonalból nem csíphető el a jelszó, az elcsípett hash viszont nem használható semmire mert munkamenetfüggő
Mit könnyebb megtörni? A vonalat vagy a szerver adatbázisát?
HTTPS
inkább https
https nélkül
A javascript kódólás megszerzésével szerintem még nem sokra megy - mert a vonalban a hash érték megy, így a jeszó elkódolt változata nem állapítható meg, hisz csak a hash látszik, a jelszó csak a memóriáában létezik.
HTTPS: Volt olyan problémám amikor egy flash elem a https oda-vissza forgatásban megsérült és nem bitről bitre adta vissza, emiatt természetesen nem is működött. (freebsd)
A jelen probléma inkább csak amiatt izgat, hogy egy egyszerű portál rendszeren SE LEHESSEN elcsenni a jelszavakat.
Azóta tovább dolgoztam, így a szerveren sem kell a jelszót tárolni - csak a hash értékét, így valóban senki sem tudja - csak a gazdája.
1. szerver: munkamenet_kulcs [generálás, elküldés]
2. terminál: jelszó [beír]
3. terminál: v1 = MD5(jelszó)
4. terminál: v2 = torzít(v1, munkamenet_kulcs)
5. terminál: v3 = MD5(v2) [elküld]
6. szerver: s1 = MD5(jelszó) [tárolt]
7. szerver: s2 = torzít(s1, munkamenet_kulcs)
8. szerver: s3 = MD5(s2)
9. szerver: összehasonlít v3 == s3 ?
Csak jelszó átvitelkor HTTPS
session hijacking
Üdv,
Felhő
védelem
(Bár közel sem 100%-os védelem, de nem tudom, hogy látezik-e legalább 99%-os. :))
IP-t nem szerencsés
Üdv,
Felhő
süti
a sütik használandók: munkamenet azonosító + ellenőrző kód belekódolva esetleg az utolsó mozdulat ideje stb..
A süti szintén elkapható a vonalból, nem?