Computers ain't that smart, Whatever man built could be taken apart
Doet iets met Cloud (MS/IBM)
maar in een session?D2k schreef op 03 september 2002 @ 15:01:
niet dat soort info opslaan in een cookie
zeg dan even hoe het dan volgens jouw moet?
sessions werken ook met cookies toch?
dus dan zouden ze alsnog te faken zijn?
Computers ain't that smart, Whatever man built could be taken apart
Dat is wel heel kort door de bocht...D2k schreef op 03 september 2002 @ 15:01:
niet dat soort info opslaan in een cookie
Kneuter: Cookies zijn niet veilig en eenvoudig te faken. Aan de andere kant zijn ze in sommige situaties wel heel erg handig. Je kunt er, als je 't perse in een cookie wilt doen, gewoon een vorm van encryptie overheen halen.
Als je sessies gaat bijhouden kun je natuurlijk gewoon op de server bijhouden wat het user-level van een gebruiker is, zodat hij dat niet zelf kan faken.KnEuTeR schreef op 03 september 2002 @ 15:03:
[...]
maar in een session?
zeg dan even hoe het dan volgens jouw moet?
sessions werken ook met cookies toch?
dus dan zouden ze alsnog te faken zijn?
Computers ain't that smart, Whatever man built could be taken apart
Met sessies kan 't dus wel veilig, als je 't maar aan de serverkant opslaat:KnEuTeR schreef op 03 september 2002 @ 15:06:
ik zou niet weten hoe ik ANDERS die userlevel en ingelogde user zou moeten onthouden als het niet (veilig) met cookies/sessions kan?
- user logt in, server controleert password, indien correct krijgt user een sessie...
- server haalt aan de hand van username userlevel uit database
- user kan met sessie alleen die dingen doen die server aan de hand van userlevel leuk vind...
zo moeilijk is 't niet hoor... pak 's een goed boek ofzo...
Verwijderd
Dat zei ik ook al... maar op zich blijft dat een gevoelige manier van informatieopslag... je kunt 't doen als 't absoluut noodzakelijk is. (Bijv omdat je meerdere servers overal ter wereld hebt staan die niet snel met elkaar kunnen communiceren). Anders kun je het beter server-side opslaan.Verwijderd schreef op 03 september 2002 @ 15:12:
Zorg dat je alles encrypted in een cookie zet, dus niet dat iedereen het paswoord kan lezen. Ook andere informatie zoals bijv. een userlevel moet er niet leesbaar instaan, dan hoef je namelijk maar wat te veranderen en je hebt een ander user level.
PV: 9360 WP WZW/ONO | Warmtepomp: Toshiba Estia 8kW 3fase | A+++ | 2x Zappi v2.1 | Stevens Super Flight '25
op http://www.phpfreakz.nl staat ook gewoon zoals ik het doe ongeveer....
Computers ain't that smart, Whatever man built could be taken apart
en wat heeft dat verder voor veiligheidsnut?!Koeskoes schreef op 03 september 2002 @ 23:05:
session gebruiken met cookie bij bijvoorbeeld 5 minuten inactifiteit automatisch de sessie beindigen
Computers ain't that smart, Whatever man built could be taken apart
als de sessie is beindigt is het nie meer te faken is
hadden we bij ons op school ook
Poohbear schreef op 03 september 2002 @ 15:11:
[...]
Met sessies kan 't dus wel veilig, als je 't maar aan de serverkant opslaat:
- user logt in, server controleert password, indien correct krijgt user een sessie...
- server haalt aan de hand van username userlevel uit database
- user kan met sessie alleen die dingen doen die server aan de hand van userlevel leuk vind...
zo moeilijk is 't niet hoor... pak 's een goed boek ofzo...
Lees je wel, of snap ik je niet? Wat is er mis met mijn uitleg?KnEuTeR schreef op 03 september 2002 @ 23:03:
ja maar hoe bedoel je "server side opslaan" en MySQL gebruiken, ik heb alle users + md5 password in een mysql database staan, maar ik weet dan niet hoe ik zonder cookies een veilig "login systeem" kan maken?!
op http://www.phpfreakz.nl staat ook gewoon zoals ik het doe ongeveer....
Doet iets met Cloud (MS/IBM)
Cookies:
-Een bestand op de PC van de client die de informatie bevat. Hierin staan dan dus het userlevel, al dan niet gecodeerd.
Sessies:
-Er wordt een cookie op de pc van de client opgeslagen met een uniek nummer. Dit nummer komt overeen met een bestandsnaam in /tmp In dit bestand wordt dan het userlevel opgeslagen.
Wat je dus alleen met sessies op de clientkant opslaat is het 'unieke id'. De rest staat allemaal in het bestand in /tmp op je server. Men kan dus alleen het sessie-id veranderen, maar niet de variabeles die in het bestand op jouw server staan.
Duidelijk?
hehe ligt niet aan jou. Volgens mij wordt er niet goed gelezenPoohbear schreef op 04 september 2002 @ 07:57:
[...]
[...]
Lees je wel, of snap ik je niet? Wat is er mis met mijn uitleg?
gewoon sessie aanmaken met inloggegevens en vervolgens sessie object in een cachemanager met een timer erop. Maare.. wellicht dat de topicstarter gewoon es ff een goed PHP boek moet kopen zoals deze, want je kan toch niet verwachten dat iemand hier een compleet stuk code gaat neerzetten met daarin de specifieke oplossing.
[ Voor 0% gewijzigd door bille op 04-09-2002 09:18 . Reden: klote bb ]
Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies
Triloxigen schreef op 04 september 2002 @ 08:53:
Mijn mening is dat je dat ook niet in sessions moet opslaan, maar steeds bij het herladen van de pagina de username en pass uit de cookie haald, en dan in de db gaat kijken wat z'n status is..
lekker is dat
Daarnaast lijkt het me een beetje onzinnig om het op deze manier te doen. Eigenlijk maak je nu ook gebruik van de sessie techniek. Je hebt bij de client een uniek identificerende info (user + pass) waarmee op de server de bijbehorende gegevens kunnen worden gezocht (userlevel in db).
Waneer je nu gebruik maakt van sessies wordt die uniek identificerende code niet user/pass, maar een unieke random code. de serverside gegevens worden niet uit de db gehaald, maar zitten in een klein bestandje.
Dat jij sessies als 'onveilig' beschouwt en daarom maar jouw systeem gebruikt slaat dus eigenlijk helemaal nergens op. Je eigen manier is 1 onveiliger (pass in cookie, fijn voor gedeelde pc's ed) en 2 trager (elke keer dat een pagina opgevraagd wordt, wordt er weer de hele inlog + info ophaal actie uitgevoerd) zonder dat het enige meerwaarde biedt.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
Mijn cookie data bevat dan user_id en password (md5 hash zodat als men door je encryptie heen is dus ook dat niet er uit kan trekken).
Maarja, dit is allemaal ook al zo'n beetje boven geroepen en is imho toch echt de meest veilige oplossing.
Data met Encryptie eroverheen is ook nog steeds data, dus is het ook nog steeds fraude gevoelig (aangezien je data erin staat)
Stel je voor dat iemand op het idee komt om een willekeurige string te maken van x karakters, die slaat hij op bij de "ingelogde" gebruikers, logt de gebruiker in zet je de random string in een cookie, waardoor je kan opzoeken wie die gebruiker is, geen encryptie van de data, niets alleen volkomen willekeurigheden.
Ah, laat ik mezelf niet voor de gek houden, niemand zal ooit zo iets bedenken.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Hmmm, nieuw voorstel:dusty schreef op 04 september 2002 @ 11:01:
Stel je voor dat iemand op het idee komt om een willekeurige string te maken van x karakters, die slaat hij op bij de "ingelogde" gebruikers, logt de gebruiker in zet je de random string in een cookie, waardoor je kan opzoeken wie die gebruiker is, geen encryptie van de data, niets alleen volkomen willekeurigheden.
data -> md5 van maken
Data + md encrypten en in cookie zetten
Op het moment dat er dan bogus data binnen komt klopt de md5 dus niet meer en kun je dus alles discarden.
kortom, sla het userlevel in het sessie object op (staat ook hierboven). Wat is een sessie object? Een sessie object wordt aangemaakt (in jsp wel iig weet niet of dat voor php ook geldt) voor elke gebruiker die voor het eerst jouw site bezoekt. Hierin kun je variabellen / objecten opslaan voor een specifieke sessie. Als de gebruiker de browser sluit, of er treedt een sessie timeout op, door bijvoorbeeld 30 minuten niets te doen, dan verdwijnt de sessie weer uit het geheugen van de webserver. Jij zou dus het userlevel in het sessie object kunnen zetten op het moment dat iemand inlogt.
Er is verders zat informatie voor php-sessies te krijgen dus ff zoeken met google moet voldoende zijn.
Als je dat af hebt kun je cookies gaan gebruiken voor zoiets
[rml][ php] Inloggen met cookies[/rml]
suk6
Verwijderd
zuchteMAeRCe schreef op 03 september 2002 @ 15:18:
Als iemand weet hoe jouw systeem in elkaar zit wel (makkelijk achter te komen door te kijken hoe de cookie eruit ziet) is het makkelijk te faken, dus het is veiliger om Msql te gebruiken
lekker antwoord
cookies zijn niet veilig DUS -> Msql
net of Msql
als je een antwoord geeft probeer dan een zinnig antwoord te geven en niet zomaar termen de lucht in te smijten waar je ooit eens over gedroomd hebt.
sorry maar dit moest ik even kwijt
p.s. je bedoelde zeker MSsql Server ipv miniSQL?
laat dan tijdens het inloggen een unieke code maken van een teken of 64 (of 128),
sla deze dan op in de database, in een extra veld bij de gebruiker,
en zet de zelfde code in een cookie
Zorg ervoor dat je memory cookies gebruikt, deze worden verwijderd als de brouwser word afgesloten.
Vergelijk vervolgens bij ieder bestand wat de gebruiker wil openen of de string in de cookie overeenkomt met de string in de DB, zo ja, ingelogd, zo niet.... redirect naar login.....
Werk erg goed, omdat de string die in het cookie staat, overeen moet komen met de string in de DB, en die word gevuld op het moment dat de gebruiker inlogt, dus faken van een cookie heeft geen zin meer, en je verstuurd geen belangrijke data.
En dan verloopt je sessie en ben je je object dus wel kwijt. Hoe wil je dan de user weer opnieuw laten inloggen zonder dat ie username/password moet invoeren? Zeker door op de client in zijn cookie de laatst gebruikte sessie op te slaan, die in een logintabel bijhouden, etc?CK schreef op 04 september 2002 @ 11:23:
kortom, sla het userlevel in het sessie object op (staat ook hierboven). Wat is een sessie object? Een sessie object wordt aangemaakt (in jsp wel iig weet niet of dat voor php ook geldt) voor elke gebruiker die voor het eerst jouw site bezoekt. Hierin kun je variabellen / objecten opslaan voor een specifieke sessie. Als de gebruiker de browser sluit, of er treedt een sessie timeout op, door bijvoorbeeld 30 minuten niets te doen, dan verdwijnt de sessie weer uit het geheugen van de webserver. Jij zou dus het userlevel in het sessie object kunnen zetten op het moment dat iemand inlogt.
Dat is dus geen oplossing als je de site ook toegankelijk wilt maken voor mensen die hun cookies uit hebben staan. Op het moment dat mijn setcookie niet lukt geef ik nl. het sessie_id mee in de url zodat ze wel van de site gebruik kunnen maken en sessies ondersteunen zonder cookies. Op dat moment kan iemand gewoon je http requests onderscheppen en die vervolgens dus in een cookie kwakken en je bent opeens een user die toegang heeft. Erg fraude gevoelig dus.
Een ander nadel van sessie id's in URL's is dat als je een link post of naar iemand emailt, je de sessie id mee stuurt. Een tijdje terug had iemand in een online artikel over een favorite vibrator een link opgenomen naar een pagina van de "Christine Le Duc" website met daarin een sessie id.Banpei schreef op 04 september 2002 @ 11:39:
[...]
Dat is dus geen oplossing als je de site ook toegankelijk wilt maken voor mensen die hun cookies uit hebben staan. Op het moment dat mijn setcookie niet lukt geef ik nl. het sessie_id mee in de url zodat ze wel van de site gebruik kunnen maken en sessies ondersteunen zonder cookies. Op dat moment kan iemand gewoon je http requests onderscheppen en die vervolgens dus in een cookie kwakken en je bent opeens een user die toegang heeft. Erg fraude gevoelig dus.
Je raad natuurlijk de gevolgen hiervan, vooral toen bleek dat de sessie id's makkelijk te raden waren.
PS: Als je http requests kan onderscheppen dan heb je toch ook de inhoud van de cookies omdat die dan meegestuurd worden?
That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)
Verwijderd
correctPS: Als je http requests kan onderscheppen dan heb je toch ook de inhoud van de cookies omdat die dan meegestuurd worden?
Zoals ik al zei doe ik dat dus alleen als iemand zijn/haar cookies uit heeft staan. Heeft geen nut als ze wel aan staan.Dawns_sister schreef op 04 september 2002 @ 12:24:
Een ander nadel van sessie id's in URL's is dat als je een link post of naar iemand emailt, je de sessie id mee stuurt. Een tijdje terug had iemand in een online artikel over een favorite vibrator een link opgenomen naar een pagina van de "Christine Le Duc" website met daarin een sessie id.
Je raad natuurlijk de gevolgen hiervan, vooral toen bleek dat de sessie id's makkelijk te raden waren.
[/quote]PS: Als je http requests kan onderscheppen dan heb je toch ook de inhoud van de cookies omdat die dan meegestuurd worden?
Correct (zoals boven al gezegd). Blijft wel zo dat de cookie optie imho toch beter blijft.
Bij het laden van een pagina heb ik altijd een include, die het cookie checkt, en aan de DB vraagt of het in het cookie opgeslagen id, username en pw overeen komen met wat er in de DB staat. Klopt dit? Dan ben je gewoon wat er in je cookie staat. Evt. rechten kunnen gewoon in de DB staan.
Klopt het cookie niet? Dus iemand verander het userID, de username, of het encrypted pw, dan wordt het gezien, omdat het niet meer matcht met de database. In dat geval wordt het cookie weggegooid, en moet je opnieuw inloggen, om een nieuw (kloppend) cookie aan te maken.
Dit lijkt mij een veilige manier, of zijn er mensen die me kunnen vertellen hoe je dit zou kunnen omzeilen?
En voor zover ik weet is dit niet te omzeilen, en zeker niet als je met memory cookies werkt.