ip veilig?
Hallo,
Ik heb een inlogsysteem gemaakt en die slaat je ip-adres op in een database om te controleren of iemand ingelogd is.
Maar is dit wel veilig?
Ik heb een inlogsysteem gemaakt en die slaat je ip-adres op in een database om te controleren of iemand ingelogd is.
Maar is dit wel veilig?
Ja, waarom niet? Zolang je deze op de goede manier op slaat in de database met mysql_escape_string("INSERT INTO blabla (ipadres) VALUES ('".$_SERVER["REMOTE_ADDR"]."')"; o.i.d. Gebruik van mysql_escape_string(); moet je even googlen als SQL injection. :-)!
En wat als er meerde mensen op 1 IP zitten wat erg vaak gebeurt op scholen, bedrijven etc...?
Juist :)... dan valt de conclusie snel te trekken.
Een moie manier is om Sessies te gebruiken of cookies met twee waarden (userid en een willekeurige md5()-hash) en die controleer je in de database.
Mooi voorbeeld is:
http://multisess.clayweb.nl
Juist :)... dan valt de conclusie snel te trekken.
Een moie manier is om Sessies te gebruiken of cookies met twee waarden (userid en een willekeurige md5()-hash) en die controleer je in de database.
Mooi voorbeeld is:
http://multisess.clayweb.nl
Dus als je ip in de database staat dan ben je ingelogd?
Handig. Veel bedrijfsnetwerken gebruiken slechts één ip-nummer. Dus als er dan iemand inlogt is het hele bedrijf ingelogd.
Handig. Veel bedrijfsnetwerken gebruiken slechts één ip-nummer. Dus als er dan iemand inlogt is het hele bedrijf ingelogd.
Kortom, NIET veilig!!
'Justin:
Ja, waarom niet? Zolang je deze op de goede manier op slaat in de database met mysql_escape_string("INSERT INTO blabla (ipadres) VALUES ('".$_SERVER["REMOTE_ADDR"]."')"; o.i.d. Gebruik van mysql_escape_string(); moet je even googlen als SQL injection. :-)!
neem jij je zelf serieus ?
hoop van niet.
Quote:
Deze manier is !
ongeschikt
ongeschikt
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
Ik begreep 'm anders. Ik dacht dat hij de IP náást de normale login gegevens zou willen opslaan, dan zou er niks mis mee zijn. Maar als het is zoals jullie het intepreteren, is het niet veilig, dôh... Ik neem toch niet aan dat je alleen je IP adres gebruikt om in te loggen?
Ik ga wel sessies gebruiken.
'Tristan:
Ik ga wel sessies gebruiken.
En dan op dezelfde manier? Maakt niet zo veel verschil lijkt mij.
wat bedoel je met dezelfde manier en hoe moet ik sessies dan goed gebruiken?
Gewijzigd op 01/01/1970 01:00:00 door Tristan
je zou PHP-Sessions kunnen gebruiken. Dit werkt haast net al met cookies, maar niet iets anders. Zie de tutorials.
Of je kan met cookies werken, en de dan de cookie's vergelijken met wat er in de database staat.
Of je kan met cookies werken, en de dan de cookie's vergelijken met wat er in de database staat.
als je een goede browserfingerprint gebruikt.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
als je de zoekfunctie gebruikt zie je hier meerdere topics over.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
als je de zoekfunctie gebruikt zie je hier meerdere topics over.
'dennis:
als je een goede browserfingerprint gebruikt.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
als je de zoekfunctie gebruikt zie je hier meerdere topics over.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
als je de zoekfunctie gebruikt zie je hier meerdere topics over.
Hier ben ik niet echt helemaal mee eens. In PHP zijn er geen unieke waardes uit variabelen die per PC worden gegenereerd. Useragents kunnen nameljik ook hetzelfde zijn.
is het veilig genoeg als ik de username in een sessie zet.
en je dan ingelogd bent als de username in de database voorkomt?
(het is een inlogsysteem voor een (kleine) webshop)
en je dan ingelogd bent als de username in de database voorkomt?
(het is een inlogsysteem voor een (kleine) webshop)
Het is over het algemeen aan te raden om een deel van de gegevens op te slaan in je sessie. Deze variabelen zijn namelijk tijdens het hele bezoek aanwezig, en dus een mooie indicatie (en snel beschikbaar).
Wel is het goed om dit nog tegen je database aan te houden... Door bijvoorbeeld een hash van username, IP, user agent en / of logintijd op te slaan in de database, zo kun je op de server controleren of er geen gekke dingen gebeuren met de sessie.
Maar controleer dus nooit maar op 1 ding, en zeker niet op alleen user agent / IP, omdat die 2 niet zo veelzeggend zijn...
Wel is het goed om dit nog tegen je database aan te houden... Door bijvoorbeeld een hash van username, IP, user agent en / of logintijd op te slaan in de database, zo kun je op de server controleren of er geen gekke dingen gebeuren met de sessie.
Maar controleer dus nooit maar op 1 ding, en zeker niet op alleen user agent / IP, omdat die 2 niet zo veelzeggend zijn...
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
@aar. er is niet iets wat 100% uniek is maar het kan wel unieker zijn dan alleen ip adres wat ik zelf doe is
md5($ip,$username,$useragent,nog wat van die dingen,uniqid().
die plaats je in een coockie en in een database en zo kan je een al ingelogd script gebruiken het beste is natuurlijk wanneer je die uniqid vervangt door microtime en zo een verval tijd/datum kan maken. want alleen jij weet de volgorde van de variabelen enz.
dat is redelijk veilig en je hebt altijd een unieke hash maar controleren op alleen ip adres is ouderwets. browserfingerprinting is al een grote verbetering maar perfect is het zeker niet.
daarbij komt dat bijvoorbeeld md5 naar mijn mening ook achterhaald is.
maar zo blijf je eeuwig discusseren
md5($ip,$username,$useragent,nog wat van die dingen,uniqid().
die plaats je in een coockie en in een database en zo kan je een al ingelogd script gebruiken het beste is natuurlijk wanneer je die uniqid vervangt door microtime en zo een verval tijd/datum kan maken. want alleen jij weet de volgorde van de variabelen enz.
dat is redelijk veilig en je hebt altijd een unieke hash maar controleren op alleen ip adres is ouderwets. browserfingerprinting is al een grote verbetering maar perfect is het zeker niet.
daarbij komt dat bijvoorbeeld md5 naar mijn mening ook achterhaald is.
maar zo blijf je eeuwig discusseren
'Justin:
Ja, waarom niet? Zolang je deze op de goede manier op slaat in de database met mysql_escape_string("INSERT INTO blabla (ipadres) VALUES ('".$_SERVER["REMOTE_ADDR"]."')"; o.i.d. Gebruik van mysql_escape_string(); moet je even googlen als SQL injection. :-)!
kun je je ip adres zodanig veranderen om een sql injectie te laten veroorzaken??
Ik heb het inlogsysteem aangepast, ik heb gebruik gemaakt van sessions in combinatie met een ip-check
'dennis:
als je een goede browserfingerprint gebruikt.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
en die opslaat in een coockie en in de site
kan je dat gebruiken dat doe ik zelf
het principe is dat je een soort vingerafdruk neemt van de gebruiker waaronder het IP adres,user agent en een paar andere variabelen. die dus vast zitten aan 1 specifieke computer.
hier maak je een hash van die sla je op in een coockie en in je database en die kan je dan matchen. dit is redelijk veilig.
Over het algemeen wordt er in een bedrijfsnetwerk of schoolnetwerk gemaakt van allemaal dezelfde pc's met allemaal hetzelfde OS die ook allemaal op dezelfde manier zijn ingesteld.
Is dus niets unieks te halen voor een webserver.
Genoeg bedrijven gebruiken thin-clients waarbij applicaties vanaf dezelfde server gerunt worden. Er kunnen dan helemaal geen verschillen meer ontdekt worden...
Slechte manier dus.
'Peter:
kun je je ip adres zodanig veranderen om een sql injectie te laten veroorzaken??
'Justin:
Ja, waarom niet? Zolang je deze op de goede manier op slaat in de database met mysql_escape_string("INSERT INTO blabla (ipadres) VALUES ('".$_SERVER["REMOTE_ADDR"]."')"; o.i.d. Gebruik van mysql_escape_string(); moet je even googlen als SQL injection. :-)!
kun je je ip adres zodanig veranderen om een sql injectie te laten veroorzaken??
Daar gaat het niet om, zie het gebruik van mysq_real_escape_string van Justin. Dat slaat nergens op.
Geen enkele waarde die je ophaalt van buiten jouw systeem is veilig.
$_POST is niet veilig, $_GET is niet veilig, $_COOKIE is niet veilig, $_REQUEST is niet veilig en ook $_SERVER is niet veilig. Het lijkt me dat $_SESSION wel veilig is, maar just to be sure gooi ik ook daar altijd mysql_real_escape_string() overheen. Veiligheid voor prestaties en ik denk niet dat me dat nou zoveel server-load gaat kosten.
$_POST is niet veilig, $_GET is niet veilig, $_COOKIE is niet veilig, $_REQUEST is niet veilig en ook $_SERVER is niet veilig. Het lijkt me dat $_SESSION wel veilig is, maar just to be sure gooi ik ook daar altijd mysql_real_escape_string() overheen. Veiligheid voor prestaties en ik denk niet dat me dat nou zoveel server-load gaat kosten.




