login  Naam:   Wachtwoord: 
Registreer je!
 Forum

session safe? | Pagina 2

55 antwoorden

Gesponsorde links
Offline TotempaaltJ - 10/03/2010 19:28
Avatar van TotempaaltJ PHP interesse Sorry, bij mijn reactie had ik pagina 3 niet gelezen 

Reactie op dit:
vinTage schreef:
Met computer 2 ga je ook daarheen en session id die boven in beeld staat bij computer 1 zet je in computer 2 middels de webdevtoolbar als value voor het SESSIONID cookie, refrech de page op comp2 en check de dump onderin, je hebt daar de sessionnaam van computer 1.

Ja, maar hier heb je niks aan. Als jij bijv. administrator bent, dan zal degene die jou wilt hacken toegang moeten hebben tot jouw PC. 
Inderdaad, je neemt mijn sessie zo over, dit kan je in principe achterhalen als user als je bijvoorbeeld remote code execution gebruikt, maar ik neem aan dat je dat niet doet, dus dan is het zonder dat IP adres net zo veilig als met 
Offline vinTage - 10/03/2010 19:30
Avatar van vinTage Nieuw lid
TotempaaltJ schreef:
Ja, maar hier heb je niks aan. Als jij bijv. administrator bent, dan zal degene die jou wilt hacken toegang moeten hebben tot jouw PC. 


Hoezo?
ALS ik een session_id weet, dan neem ik gewoon je session over, ik kan dan gewoon doen en laten wat ik wil met jouw session, zoals in dat testscriptje jou een andere naam geven bv.
De overige controles maken het eigenlijk pas veilig.
Offline TotempaaltJ - 10/03/2010 19:58
Avatar van TotempaaltJ PHP interesse Als je mijn session_id hebt, maar hoe ben je van plan hier aan te komen? Een administrator (jij dus) kan dit wel, maar die zie ik niet zo gauw er voor aan om zijn eigen site te hacken, of wel soms?

Zonder mijn session_id kan je niks met mijn session!
Offline vinTage - 10/03/2010 20:43
Avatar van vinTage Nieuw lid Ik had ook al 50 keer "gezegd /aangetoond" dat dat idd niet zo makkelijk was/zal zijn, maar ga nou niet zeggen dat het onmogelijk is...(als iets deftigs gescript is zal het wss wel onmogelijk zijn, maar zeg nooit nooit)
Offline Joost - 10/03/2010 20:48 (laatste wijziging 10/03/2010 20:48)
Avatar van Joost PHP expert
vinTage schreef:
EDIT, het werkt wel, ik kan wel iemand zn sessie kapen!!
Okay de controles zorgen dat je er niet veel mee kan, maar het werkt wel degelijk...

http://www.vintagesworld.be/zooi/sessieding.php
 Ja, dat klopt, je kan hem nog wel kapen inderdaad. Voor zover ik weet is daar niks tegen te doen. Je kan de kaping wel onschadelijk maken d.m.v. zoiets:
  1. if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
  2. unset($_SESSION);
  3. exit('Session IP matchte niet met je IP!');
  4. }

Bedankt door: vinTage
Offline TotempaaltJ - 10/03/2010 21:03
Avatar van TotempaaltJ PHP interesse REMOTE_ADDR is veranderbaar door de gebruiker; als hij je session_id al weet, waarom dan niet ook meteen je IP?
Offline nick5556 - 10/03/2010 21:07 (laatste wijziging 10/03/2010 21:09)
Avatar van nick5556 PHP beginner
vinTage schreef:
Ik had ook al 50 keer "gezegd /aangetoond" dat dat idd niet zo makkelijk was/zal zijn, maar ga nou niet zeggen dat het onmogelijk is...(als iets deftigs gescript is zal het wss wel onmogelijk zijn, maar zeg nooit nooit)


Het is onmogelijk om het 100% dicht te maken. Denk bijvoorbeeld aan betalingen via PayPal. Even een voorbeeld om dit duidelijk te maken.

Persoon 1: Gebruiker PayPal.
Persoon 2: Hacker.

Persoon 1 staat ingelogd op paypal om een betaling te doen. Persoon 2 kan dat controleren en zijn computer overnemen.

Oftewel, zeg maar dag dag tegen je geld.

Nick.

PS: Dit gebeurd natuurlijk niet zomaar, maar de kans bestaat, ook al is deze rond de 0.001%.  

EDIT:

Dit is dan natuurlijk niet te schuiven op jou omdat jij alleen maar het script online heb staan, de hacker krijgt de schuld.
Offline Martijn - 10/03/2010 21:53 (laatste wijziging 10/03/2010 21:54)
Avatar van Martijn Crew PHP ik heb een tijd op Bootleggers.us gezeten, en daar zaten bijzonder veel mensen die het spel graag exploiten voor de lol. Het ergste wat hier in de buurt komt, is de sessionhack, dus de gehele sessie overnemen van iemand. Dat is te fixen.

Dat van dat IP adres. als je een IP en een random string in de db zet en in een sessie, en als de code en IP niet matchen met hoe het in de DB staat, dan destroy() je het.

Verder ben ik nog niet tegengekomen dat iemand de sessie $vars heeft gewijzigt

edit: Misschien om het wat duidelijker te maken:
Ik ga voor safe
Offline vinTage - 10/03/2010 23:24
Avatar van vinTage Nieuw lid
Martijn schreef:
Dat van dat IP adres. als je een IP en een random string in de db zet en in een sessie, en als de code en IP niet matchen met hoe het in de DB staat, dan destroy() je het.

Dat is zo ongeveer wat ik doe met mijn "voorstelletje" wat ik dacht dat veiliger zou zijn dan alleen een ip check.

inderdaad, zoals joost al zei, ga ik gewoon de sessions destroyen, zo krijgt de "hacker" ook geen data te zien die niet voor hem bedoeld is.
Offline Joost - 10/03/2010 23:28 (laatste wijziging 10/03/2010 23:32)
Avatar van Joost PHP expert
TotempaaltJ schreef:
REMOTE_ADDR is veranderbaar door de gebruiker; als hij je session_id al weet, waarom dan niet ook meteen je IP?
Waar zou je iemand dan anders mee willen identificeren? Misschien met HTTP_X_FORWARDED_FOR, maar die lijkt me dan net zo goed aanpasbaar. Zeg me als ik het fout heb, want zoveel verstand heb ik niet op dit gebied.
Offline TotempaaltJ - 11/03/2010 18:14
Avatar van TotempaaltJ PHP interesse Ja, HTTP_X_FORWARDED_FOR is ook aanpasbaar, makkelijker dan REMOTE_ADDR zelfs, omdat alle HTTP_* dingen in de HTTP Header worden meegestuurd. Dus wat ik zeg, session is safe genoeg, maar je kan hem onmogelijk zo ultiem veilig maken als jij wilt.
Offline vinTage - 11/03/2010 18:25
Avatar van vinTage Nieuw lid en hoe bepaal je dan welk ip je neemt, want je zegt wel dat het kan, maar ik vind niks nuttigs op google (toch zeker 5 minuten rondgekeken) 
Kheb wel hier en daar gelezen dat je een ander ip kan nemen (bv gwn via proxy, of bij sommige providers met dynamische ip,s een flush of zo iets), maar ik vind nergens welk ip je wilt gebruiken.
Dus imo nog steeds veilig genoeg?
Offline TotempaaltJ - 11/03/2010 18:29
Avatar van TotempaaltJ PHP interesse Zoals ik zei, veilig genoeg. Nee, ik vond inderdaad ook niks over hoe je het kan veranderen, maar wel dat het kan (geen hard bewijs dus) 
Offline lemoinet - 11/03/2010 18:48
Avatar van lemoinet PHP gevorderde ik vraag zo het ip-adres op. maar of je dan het echte ip-adres terugkrijgt, weet ik niet.

  1. function ip() {
  2. if(getenv("HTTP_CLIENT_IP")) {
  3. return getenv("HTTP_X_FORWARDED_FOR");
  4. }elseif(getenv("HTTP_X_FORWARDED_FOR")) {
  5. return getenv("HTTP_CLIENT_IP");
  6. }else{
  7. return $_SERVER["REMOTE_ADDR"];
  8. }
  9. }

Offline vinTage - 11/03/2010 20:51
Avatar van vinTage Nieuw lid
TotempaaltJ schreef:
Zoals ik zei, veilig genoeg. Nee, ik vond inderdaad ook niks over hoe je het kan veranderen, maar wel dat het kan (geen hard bewijs dus) 


Dus eigenlijk zei je tot nu toe niks interessants 

thx lemoinet, ik heb die functie idd ook al eens ergens terug gezien maar wist niet meer waar.
Eigenlijk maakt het me ook helemaal niks uit of ze met een echt of vals ip inloggen, ze foppen alleen zichzelf als ze halverwege van ip gaan veranderen, door de overige controles komen ze niet meer heen met een ander ip 

Nu heb ik wel ergens gelezen dat AOL wel zomaar ineens andere ip's toekent, of dit echt waar is weet ik niet, nu maar hopen dat ze in belgie/nederland niet zo'n rare constructie gaan verzinnen, heel wat inlogsysteempjes zouden het lastig krijgen dan 
Offline TotempaaltJ - 11/03/2010 21:11
Avatar van TotempaaltJ PHP interesse Nee, idd, ik zeg niet zoveel interessants, maar ik zeg in ieder geval wat.
PHP.net: getenv is gewoon een equivalent voor _SERVER, dus HTTP_CLIENT_IP wordt ook in de HTTP Headers meegestuurd, minder veilig dan REMOTE_ADDR
Offline cloudstrife - 11/03/2010 22:12
Avatar van cloudstrife PHP beginner Al eens gedacht om je sessie variabelen niet bij te houden in SESSION maar gewoon in je db? Je gebruikt dan de sessionId of een andere als enige sessie variabele en over de andere gegevens heb enkel jij volledige controle.
Offline Joost - 11/03/2010 22:25
Avatar van Joost PHP expert
cloudstrife schreef:
Al eens gedacht om je sessie variabelen niet bij te houden in SESSION maar gewoon in je db? Je gebruikt dan de sessionId of een andere als enige sessie variabele en over de andere gegevens heb enkel jij volledige controle.
Dit verplaatst alleen de opslagplaats van de sessies, niet het gevaar van hijacken.
Offline vinTage - 11/03/2010 22:41
Avatar van vinTage Nieuw lid Hoewel het een uniek idee is (voor mij toch), ERGENS moet er een referentie bestaan, en zoals Joost al aangaf blijft er dan niet veel meer over dan het id.

[off]
stiekum vind ik dit gedoe eigenlijk echt wel interessant  
Offline Joost - 11/03/2010 22:43
Avatar van Joost PHP expert
vinTage schreef:
Hoewel het een uniek idee is (voor mij toch), ERGENS moet er een referentie bestaan, en zoals Joost al aangaf blijft er dan niet veel meer over dan het id.

[off]
stiekum vind ik dit gedoe eigenlijk echt wel interessant  
Sessies opslaan in de database kan wel nuttig zijn hoor, als je bijvoorbeeld een website op meerdere servers moet draaien bijvoorbeeld, en zo zijn er nog wel een paar redenen 
Offline Wave6 - 11/03/2010 23:22 (laatste wijziging 11/03/2010 23:34)
Avatar van Wave6 PHP beginner Zo vinTage! We hebben in het begin van dit topic Sima lekker wakker geschud he! hahahah
Wat een lang topic zeg 

Edit:
Mensen we kunnen hier uren over discussiëren, maar zolang er geen https
gebruikt wordt zijn sessies, cookies en headers gewoon te faken.
Tenzij je de data gewoon netjes encrypt en gewoon controleerd op input.
Is er niet zoveel mee aan de hand.

Ook al komt er geen user input in je sessie te staan, toch blijven controleren op input.
Veel mensen denken bijvoorbeeld dat ze radio buttons niet hoeven te checken op inhoud.(denk aan addslashes of dergelijke functies).
Een beetje programmeur zal dit vrij snel in de gaten hebben en in het ergste geval zal dit nare gebeurtenissen opleveren.


Het is nooit helemaal veilig. Er is altijd wel 1 iemand die slimmer is als ik(wij).
Maar hier kom je achter zodra die gene je zal testen 

PS: Joel is zo vriendelijk geweest om mijn oude gebruikersnaam (D_O) te veranderen naar Wave6 (Naam van mijn onderneming)
Offline TotempaaltJ - 12/03/2010 16:38
Avatar van TotempaaltJ PHP interesse Eigenlijk moet je ALLES wat je opslaat/print en wat uit POST, GET of _SERVER komt checken!
Offline Martijn - 12/03/2010 17:10
Avatar van Martijn Crew PHP dat is inderdaad wat daarboven werd gezegd.
Offline TotempaaltJ - 12/03/2010 17:12
Avatar van TotempaaltJ PHP interesse Ja, maar ik zeg het directer 
Offline Wave6 - 12/03/2010 19:09
Avatar van Wave6 PHP beginner Ik denk voor dit topic toch wel een sticky! Want veel beginnende programmeurs kunnen hier veel van opsteken! * thumbs up *
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.28s