webForumDet fria alternativet

Inloggning - bra och dåligt med olika idéer

Webbutveckling

8 svar · 756 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

Jag har sökt här (läst allt jag hittade) och i PHP-forumet (läst det som verkade diskutera mer allmänt snarare än hjälp med fel i kod) men har fortfarande vissa funderingar som jag inte hittat svar på.

Så vitt jag förstår kan man lösa inloggning med SESSIONs. Men det öppnar samtidigt för en del problem:
1) Vad händer om användaren vägrar COOKIES?
Om resultatet är att den personen inte kan använda min site så struntar jag i problemet, men kan det ge upphov till säkerhetsproblem?

2) Finns det risk att en användare kan se innehållet i SESSION? Ändra det?
I stil med att GET och POST variabler kan få andra värden än man tänkt sig? Vad gör man åt det i så fall?

Sedan... i någon tråd talas det om att det kan vara bra att logga ipnumret. Och då undrar jag...
3) Kan man inte lagra inloggade personer i sin MySQL-databas istället och slippa SESSIONs?
Alltså, om man skapar en tabell:
Active ((userid, ipnr, time))
och låter en lyckad inloggning registreras i den, samt varje gång detta ipnr laddar en ny sida uppdateras tiden om denna nya aktivitet sker inom x minuter?

Proxyservrar kan väl inte dela ut samma ipnummer till olika personer samtidigt - eller kan de det?

  1. Vilka är nackdelarna med den lösningen jämfört med SESSIONs? Ev. fördelar?

I mitt fall handlar det om inloggning för highscorelistor och gästboksinlägg (frågesport).

Medlem sedan juni 20034 013 inlägg
#2

1. Inga säkerhetsproblem. Användaren blir inte inloggad.

2. Nej. Däremot finns det risk att användaren kan använda någon annans session, om du då inte gör IP-kollen.

3. Jo, det kan man. Då får du skapa dina cookies själv istället.

4. Nackdelen är att det blir mer att programmera. Fördelen att du kan göra det som du vill.

Proxyservrar visar normalt inte personernas IP-adresser utan presenterar alla besökare med sin egen adress.

En proxy är en betjänt, ungefär. Du säger åt betjänten att gå till pressbyrån och köpa en tidning åt dig. De som befinner sig i affären ser bara att det är betjänten som köper tidningen. De vet ju inte att det är du som ska ha den. Om betjänten bara jobbar åt dig så går det ju i och för sig att lista ut att det är du, men om flera människor anlitar samma betjänt (proxy) så vet ju inte personerna i affären vem han/hon handlar åt. Såvida inte ni har olika smaker, förstås :-)

Medlem sedan mars 20034 471 inlägg
#3

Tack tydal för snabbt svar! :)

tydal skrev:

... 3. Jo, det kan man. Då får du skapa dina cookies själv istället.

??? :q Men... varför behövs COOKIES i så fall? Till vad? Nu fattar jag inte... Vad behöver lagras i användarens dator som inte är lagrat i tabellen?

tydal skrev:

... Proxyservrar visar normalt inte personernas IP-adresser utan presenterar alla besökare med sin egen adress...

Så om man har två olika användare inne samtidigt som använder samma proxyserver så kommer de att ha samma ipnummer? :q Är det det du menar?

:i Är det därför jag behöver COOKIES, för att skilja dom åt?

Är AOL en proxyserver? Vet att folk som ansluter via AOL alla använder en pool av samma ip-adresser. Eller är det något annat?

Medlem sedan juni 20034 013 inlägg
#4

Det är precis därför du behöver cookies, ja.

AOL kör förmodligen med DHCP, dvs när man går ut på nätet så får man en ledig IP-adress ur poolen. När personen sedan stänger av datorn blir hans/hennes tidigare IP-adress tillgänglig för andra. På det viset kan du alltså inte samtidigt ha två personer med samma IP, men det är fullt möjligt att någon annan kommer in med IP-adress som tidigare använts av någon annan. Adresserna återanvänds liksom. Kallas för dynamiska IP-adresser.

Medlem sedan juni 20034 013 inlägg
#5

Man har också samma IP-adress som andra om sitter på ett NAT:at nät (network address translation). Så är vanligt på arbetsplatser. Då har man ett lokalt nätverk mellan datorerna sinsemellan och datorernas riktiga IP-adresser finns i den lokala serien (exempelvis 192.168.0.2, 192.168.0.4 och sånt). Sedan går all trafik ut på Internet genom en router och så har routern en "riktig" IP-adress som är den syns på din hemsida. Då får också flera besökare samtidigt samma IP-adress.

Medlem sedan mars 20034 471 inlägg
#6

Ahh! :) OK, jag fattar. Tack! :)

tydal skrev:

... 2. Nej. Däremot finns det risk att användaren kan använda någon annans session, om du då inte gör IP-kollen.
....

Betyder detta att man gör klokt i att lagra ipnr:t i databasen även vid sessions eller att man ska lagra ipnr:t i SESSION?

Om man använder SESSIONs, vad bör lagras? Räcker ipnr och användarnamn? Tid? Annat?

Medlem sedan juni 20034 013 inlägg
#7

Du kan lagra IP:t i session och det räcker med det. Sessioner funkar så att när den skapas så slumpas ett tal fram som ska identifiera användaren. Detta tal skickas i en cookie till användaren och vid varje sidvisning så skickas ju cookien över till servern och servern vet därmed vilken session den ska plocka fram.

Får man tag på någon annans cookie kan man alltså ta över den personens session genom att använda den cookien själv. Kallas session hi-jacking. Men det kan du alltså begränsa genom att kolla IP:t.

Medlem sedan mars 20034 471 inlägg
#8

tydal skrev:

... Får man tag på någon annans cookie kan man alltså ta över den personens session genom att använda den cookien själv. Kallas session hi-jacking. Men det kan du alltså begränsa genom att kolla IP:t.

Om ip:t skiljer sig åt vad gör man då? :q Loggar piratens ip och stänger vederbörande ute för tid och evighet eller? :q Inte så bra väl om vederbörande sitter bakom en proxy, t.ex. ?

Hur åstadkommer man uppfyllelse av den svenska lagen om att radera all info? Dvs hur försäkrar jag mig om att sessionen verkligen rensas på begäran och att den tillhörande cookien förstörs? :q

Medlem sedan juni 20034 013 inlägg
#9

Om IP:t inte stämmer, be besökaren logga in på nytt. Är det den riktige besökaren så vet ju han/hon sitt lösenord.

(Dock finns det ju webbplatser som mot allt förnuft lagrar användarens lösenord i cookien, och då är det ju kört.)

Sessionen raderas när du raderar den eftersom den lagras på servern. Det är en helt vanlig fil i tmp-katalogen. Att cookien förstörs kan du dock inte veta eftersom den ligger på besökarens dator, så den biten är ju upp till honom/henne. Dock är ju standarden att du när du vill radera cookien ska sätta den på nytt men med ett klockslag i forntiden och då ska webbläsaren upptäcka att den har gått ut och därmed radera den. Men som sagt, det är inte ditt ansvar.

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)