toss Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 (endret) har laget et loggin-skript som jeg gjerne vil gjøre litt sikkrere.. skriptet ligger her.. her er en liten foklaring på hvorfor skriptet er usikkert, men jeg har noen spørsmål til hvordan jeg kan fikse på dette: 1. hvordan bruker man header(LOCATION:)? prøvd å lese meg frem til hva header() gjør, men aldri helt forstått detl.. 2. vil skriptet mitt bli mye sikrere om jeg bruker sessions i stedet for cookies? 3. hva er en config fil? hvordan lager jeg denne/henter info fra den? hadde vært supert å få svar på dette.. da skal skriptet med ett bli sikrere takker for alle svar EDIT: Post 300 Endret 12. januar 2005 av toss Lenke til kommentar
EirikO Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 1. hvordan bruker man header(LOCATION:)? prøvd å lese meg frem til hva header() gjør, men aldri helt forstått detl.. 2. vil skriptet mitt bli mye sikrere om jeg bruker sessions i stedet for cookies? 3. hva er en config fil? hvordan lager jeg denne/henter info fra den? 1) Ved å bruke headr:locatian vil browsern gå til en annen side når du ha logget inn. Søk etter header location så finner du ut hvordan det benytes! 2) Ja 3)En config fil er bare en fil som du seter varibler i, som du kan bruke på flere sider. Lag f.eks. en config.php som inneholder $pass="mitt_passord" (helst kryptert). Da kan du få tak i denne varialben med include("config.php"); på loginsiden din. Lenke til kommentar
Torbjørn Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 2. vil skriptet mitt bli mye sikrere om jeg bruker sessions i stedet for cookies? 2) Ja Kan du utdype den litt mer? Lenke til kommentar
Stian_ Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 Session blir lagret i minnet på serveren, mens cookies blir lagra på klienten sin PC. Hvis jeg ikke tar helt feil. Lenke til kommentar
toss Skrevet 12. januar 2005 Forfatter Del Skrevet 12. januar 2005 3)En config fil er bare en fil som du seter varibler i, som du kan bruke på flere sider. Lag f.eks. en config.php som inneholder $pass="mitt_passord" (helst kryptert). Da kan du få tak i denne varialben med include("config.php"); på loginsiden din. tusen takk for svar.. men hvis jeg lager en config.php, og setter permissions(chmod) til at bare owner kan lese, vil da skriptet kunne hente frem variabelene eller lese filen? Lenke til kommentar
ZoRaC Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 (endret) Kommer an på om brukeren som er "owner" er den samme brukeren som starter web-server applikasjonen... Hvorfor vil du endre chmod? Hvis noen går på www.minserver.no/config.php så får de bare opp en blank side, variablene blir ikke printet. Viktig å kalle den .php tilslutt! Edit: Hva med å bruke en .htaccess-fil til å beskytte i stedet? Slipper du trøbbel med sessions, osv... Endret 12. januar 2005 av ZoRaC Lenke til kommentar
Torbjørn Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 Session blir lagret i minnet på serveren, mens cookies blir lagra på klienten sin PC.Hvis jeg ikke tar helt feil. Det er fortsatt ikke sammenlignbart. Serveren husker hvilke cookies som er logget inn, om maskin #2 hacker seg inn og stjeler cookiene etter at maskin #1 er logget ut, vil han fortsatt ikke komme inn. Sessions bruker i nesten alle tilfeller cookies. Lenke til kommentar
toss Skrevet 12. januar 2005 Forfatter Del Skrevet 12. januar 2005 Hvorfor vil du endre chmod? det var noe med at om php skulle slutte å fungere så ville alt bli printet ut, uten at filen kjøres.. se her, punkt tre noen som kan forklare litt om forskjellen på user, owner og group er? men noen som vet noe bra sted å lære om .htaccess? jeg kan jo google litt, men hvis noen kommer på noe bra i farten hadde joe det vært fint Lenke til kommentar
???????? Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 (endret) Session blir lagret i minnet på serveren, mens cookies blir lagra på klienten sin PC.Hvis jeg ikke tar helt feil. Det er fortsatt ikke sammenlignbart. Serveren husker hvilke cookies som er logget inn, om maskin #2 hacker seg inn og stjeler cookiene etter at maskin #1 er logget ut, vil han fortsatt ikke komme inn. Sessions bruker i nesten alle tilfeller cookies. I dette tilfeller så stemmer det at en overgang fra cookies til session vil medføre en stor sikkerhetsforbedring, da scriptet bygger på at $var = true i en cookie så får man tilgang. Cookies har default lang utløpstid, og det er bare å åpne cookies filen i en teksteditor for å se hvordan scriptet fungerer. At det medfører at scriptet blir mye sikrere å bare gå over til sessions er jeg ikke helt enig i. toss For info om htaccess så burde du bruke google.com - det finnes mange avanserte funksjoner utover passordbeskyttelse. Owner er den brukeren som har opprettet. Når du f.eks. oppretter en fil med et ftp program så er det den brukeren du er logget inn som er eieren av filen. I tillegg så kan du gi brukergruppen rettigheter til filen. Og så er det hvilken rettighet andre brukere skal ha til filen. Endret 12. januar 2005 av ???????? Lenke til kommentar
Torbjørn Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 I dette tilfeller så stemmer det at en overgang fra cookies til session vil medføre en stor sikkerhetsforbedring, da scriptet bygger på at $var = true i en cookie så får man tilgang. Cookies har default lang utløpstid, og det er bare å åpne cookies filen i en teksteditor for å se hvordan scriptet fungerer. Nei, man trenger ikke bruke $var = true i en cookievar for å vise loginstatus - de gangene jeg selv har brukt cookies har jeg hatt server side control over hvilke cookies som er innlogget, hvilket jeg også beskriver i mitt svar. Lenke til kommentar
ZoRaC Skrevet 12. januar 2005 Del Skrevet 12. januar 2005 men noen som vet noe bra sted å lære om .htaccess? jeg kan jo google litt, men hvis noen kommer på noe bra i farten hadde joe det vært fint Jeg har laget et fullstendig usermanager-system som bruker .htaccess. Se her: http://php.reinsveien.com/ezUM/ Lenke til kommentar
???????? Skrevet 13. januar 2005 Del Skrevet 13. januar 2005 I dette tilfeller så stemmer det at en overgang fra cookies til session vil medføre en stor sikkerhetsforbedring, da scriptet bygger på at $var = true i en cookie så får man tilgang. Cookies har default lang utløpstid, og det er bare å åpne cookies filen i en teksteditor for å se hvordan scriptet fungerer. Nei, man trenger ikke bruke $var = true i en cookievar for å vise loginstatus - de gangene jeg selv har brukt cookies har jeg hatt server side control over hvilke cookies som er innlogget, hvilket jeg også beskriver i mitt svar. Det er derfor jeg kun påpeker at det gjøres her, og sier at det ikke er en god løsning. Lenke til kommentar
Torbjørn Skrevet 13. januar 2005 Del Skrevet 13. januar 2005 akkurat ja.. *titte på scriptet neste gang* Lenke til kommentar
toss Skrevet 13. januar 2005 Forfatter Del Skrevet 13. januar 2005 sikkert dumt spørsmål, men hvordan vet serveren om du er user, group eller owner? er det via ip-logging eller noe? Lenke til kommentar
???????? Skrevet 13. januar 2005 Del Skrevet 13. januar 2005 For å forklare det litt lett, så tenk deg at en server har flere brukere. Hver av disse brukerne får et brukernavn, slik at de kan f.eks. logge seg inn på kontrollpanelet eller logge seg inn via ftp og laste opp filer. Det brukernavnet man logger seg inn med er da en bruker. Når denne brukeren laster opp en fil så er denne brukeren eiern av filen. Mange hoster støtter også ssh, da kan man logge seg inn på serveren og opprette filer på lignende måte som mang gjorde før i DOS. Da logger man seg også inn som en bruker, og da blir denne brukeren eieren av filen. Når det der i mot er en som surfer som kikker på siden din, så er den ikke logget inn som din bruker eller en bruker i gruppen din. De er derfor en annen (other) bruker. Når programmer eller prosesser kjøres på serveren så er det brukeren som kjører de, selv om det f.eks. er automatisk via en cron job. Tenk deg at du logger inn på windows med bruker og oppretter en fil. Da er denne brukeren eieren av filen. Dersom noen andre i nettverket til PC'en vil se på filen så er den brukeren "other" dersom du ikke har den i gruppen bland brukere. Ble det noe klarere av det, eller bare mer forvirrende? Lenke til kommentar
toss Skrevet 13. januar 2005 Forfatter Del Skrevet 13. januar 2005 det ble absolutt klarere.. så siden jeg ikke har flere brukere på min ftp-host, så har jeg ikke noen group? alt jeg egentlig må forholde meg til er owner og other? og en i gruppen kan logge inn med en ftp-program, men bare gjøre de tingene jeg gir ham tillatelse til selv om han bruker et ftp-program? kan hende jeg har misset totalt.. Lenke til kommentar
Os|r|s Skrevet 20. januar 2005 Del Skrevet 20. januar 2005 (endret) Man kan godt lagre feks username eller id i cookies. Trikset er å hashe den infoen du putter i cookien med en verdi (denne må ikke komme på avveie!) skriver cookien: $secret_word = 'finnpånoe'; $id = "test"; $hash = md5($secret_word.$id); setcookie('id',$id.'-'.$hash, time()+3600);henter ut cookien: list($cookie_id,$cookie_hash) = explode('-',$_COOKIE['id']); if (md5($secret_word.$cookie_id) == $cookie_hash) { $id = $cookie_id; //gjør noe, feks sett en session } else { die('Invalid cookie.'); } Endret 20. januar 2005 av Os|r|s Lenke til kommentar
phun-ky Skrevet 20. januar 2005 Del Skrevet 20. januar 2005 har dette jeg: <? //deklarering av form variabler $e_post=$_POST['email']; $passord=$_POST['passw']; //sikkerhet og formatering $password = md5($passord); $esc = mysql_escape_string($e_post); $ep = addslashes($esc); //database snakk mysql_connect ("host:port", "user", "pass") or die ('My SQL Error: ' . mysql_error()); mysql_select_db ("db"); $query = mysql_query("SELECT epost, passord, fornavn, etternavn FROM tabell WHERE epost='$ep'") or die("MySQL Login Error: ".mysql_error()); $row = mysql_fetch_array($query); //hente ut fra rader $mail = $row["epost"]; $pwd = $row["passord"]; $fnavn = $row["fornavn"]; $enavn = $row["etternavn"]; //printe ut echo "<br>"; if (($esc == $mail) && ($password == $pwd)): echo "Du er nå logget inn som: $fnavn $enavn"; elseif (($esc == $mail) && ($password != $pwd)): echo "feil passord, prøv igjen"; else: echo "feil bruker, er du registrert?"; endif; ?> kommentarer? Lenke til kommentar
Torbjørn Skrevet 20. januar 2005 Del Skrevet 20. januar 2005 (endret) ja, 2: hvorfor gjør du dette? $esc = mysql_escape_string($e_post); $ep = addslashes($esc); begrunn gjerne svaret med manualreferanser. Denne kodesnutten: if (($esc == $mail) && ($password == $pwd)): echo "feil passord, prøv igjen"; vil være noe ulogisk da du matcher epost i databasen mot epost fra form. Så du kan begynne med å se om du får noe fra databasen, (husk at en tom array er boolean FALSE). Det du da vil risikere å få, er en tom array i mysql_fetch_array (hvorfor ikke bruke mysql_fetch_assoc?), og da er det bedre med koden: if(!$row){ //eposten ikke registrert } elseif($password==$pwd){ //login ok } else{ //login ikke ok } Endret 20. januar 2005 av Torbjørn Lenke til kommentar
phun-ky Skrevet 20. januar 2005 Del Skrevet 20. januar 2005 hm.. 1: det var noen her på forumet som anbefalt meg det, noe med at man kan sette inn annen kode elns.. http://no2.php.net/mysql_escape_string 2: "vil være noe ulogisk da du matcher epost i databasen mot epost fra form." <- ehm, hele poenget er at man skal sjekke om brukeren er registrert og kan logg seg inn? det funker Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå