Gå til innhold

gjøre et loggin-skript sikrere


Anbefalte innlegg

Skrevet (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 :D

Endret av toss
Videoannonse
Annonse
Skrevet

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.

Skrevet
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?

Skrevet (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 av ZoRaC
Skrevet
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.

Skrevet
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 :)

Skrevet (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 av ????????
Skrevet
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.

Skrevet
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.

Skrevet

sikkert dumt spørsmål, men hvordan vet serveren om du er user, group eller owner?

er det via ip-logging eller noe?

Skrevet

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?

Skrevet

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.. :roll:

Skrevet (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 av Os|r|s
Skrevet

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?

Skrevet (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 av Torbjørn
Skrevet

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 ;)

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...