Gå til innhold

Innloggingssystem i php


Gjest Slettet+19283741

Anbefalte innlegg

Skrevet
Last ned dette innloggings scriptet, det kan man gjøre mere på endre o.l.

 

Og det er flat-file ^^

 

 

PS: Ikke sikker på om det funker..

5105398[/snapback]

med det scriptet kan du lett lese hvilke passord brukerene har.

Videoannonse
Annonse
Gjest Slettet+6132
Skrevet
med det scriptet kan du lett lese hvilke passord brukerene har.

5144730[/snapback]

 

Derfor jeg sa han burde rename til .php og legge til en die() i toppen ;)

Skrevet
Eller bare md5(passordstring); :D

5145126[/snapback]

 

Ikke en god idé, MD5() er ingen helt sikker funksjon. Med litt tid en og en kraftig nok PC finnes det vel ikke en hash det ikke er mulig å snu, desverre.

Skrevet (endret)

Men du kan altids gjøre det litt vannskelig for diverse kiddies. Bruk altid tall i passordet ditt.. Jeg klarer en hash på 5 bokstaver på under 30 sekunder.. Men når jeg får i et tall så gidder jeg ikke vente på å få det reversert.. ;)

Endret av hero_ruler
Skrevet

Tall har lite å si, de fleste legger til tall også. Ikke glem at i litt mer avanserte miljøer så er det snakk om virkelig raske maskiner som er koblet sammen og rainbowtables. Bruken av tall, små og store bokstaver og gjerne andre tegn vil gjøre det litt verre, men dersom passordet ikke er langt nok så hjelper det også lite. Krev at passordet er minst seks tegn og legg til en salting på ytteligere 4-6 tegn, da begynner det å bli litt jobb. Husk at salt alltid burde være dynamiske, ellers ser man saltet dersom man klarer snu to passord - og da er hele effekten borte.

Skrevet

Tja... det heter å salte et passord når man legger til noe ekstra.

 

Tenk deg at du har passordet "hemmelig". Før du krypterer det så legger du til noe, f.eks. "hemmelig1234567890". På den måten så blir passordet mye lengre, og dermed veldig vansklig å hacke. Videre så er det ikke alltid like lett å vite hva som er salt og hva som er passordet, så dersom de klarer å snu det - så kan de ikke bruke det direkte når de skriver inn passordet. For du legger til saltet automatisk i scriptet, både ved registrering og ved logg inn.

Gjest Slettet+19283741
Skrevet

Hmm.. Brukes det mye salt i hotmail systemet?

Skrevet

Det er nok ikke noen her som kan fortelle deg mye om hvordan hotmail lager kodene sine - de er nok ganske godt skjult. Det er ikke urimelig å anta at de bruker en eller annen form for salting i alle fall.

Skrevet
Kjempemagetusentakker for alt arbeidet du har lagt i scriptet plastbox.

Det er bare en ting jeg lurer på nå, eller egentlig to ting. Jeg har laget 3 filer ut av alt det du postet (login.php , users.txt og makeuser.php). Jeg har tidligere linket en css fil til et html fil, men hvordan skal jeg linke en php-fil til en html?

Spm 2 er om jeg trenger MySQl eller hva det nå heter for å bruke scriptet du ga meg?

 

Håper jeg ikke glemte å si takk! ? :D

 

Er det lov til å få vite ca hvor lang tid du brukte? Bare for å være nysgjerrig..

 

Takker for alle andre svar også!

 

Håper jeg ikke maser for mye nå ?  :ermm:

5104153[/snapback]

 

Hvorfor bruke en html-fil i det heletatt? Kall alle filene dine .php så kan du når du trenger det legge inn f.eks. en include('enellerannenfil.php'); dersom du skulle trenge det.

 

Neida, du glemte ikke det. Bare hyggelig! Lenge siden sist så godt med litt oppfriskning. ^^

 

Tja.. har drevet såpass mye med php at det vel ikke tok stort mye lengre tid enn det tar å skrive samme mengden tekst ellers. Har vel skrevet omtrent samme innloggings-tingen 3-4 ganger her, men folk kan ikke søke og litt eldre ting forsvinner, virker det som.

 

Apropo det folk sier om å brute md5-hash.. Jeg tror ikke på dere. Dere snakker om scriptkiddies. Sorry, er nettopp det det høres ut som om dere er! Om man reverserer en md5-hash ville man få uendelig mange mulige passord. Dersom du kjører md5 på en "A" får du en hash på 18 tegn er det vel. Dersom du kjører md5 på en 10GB stor fil blir fortsatt hashen like lang. Om man brute forcer en md5-hash vil man kunne få alt fra 1-infinity tegn lange løsninger. Skal ha godt med tid, eller en skog av gullhår i baken om man skal klare å finne riktig passord...

 

Det er jo det geniale med hele hash-konseptet ettersom jeg har forstått det. En string har bare en mulig hash, mens en hash har uendelig mange stringer. Alt fra et enkelt tegn, til en fil så stor som all harddiskplassen på planeten. =P

  • 3 uker senere...
Skrevet

Jeg tenkte jeg skulle bruke dette. Men er det mulig å logge ut av dette? Og hvordan gjør man hvis man vil sende brukerne som har logget seg inn til en ny mappe (som derfor er kun for innloggede brukere)?

 

 

Hey, jeg føler meg grei i natt, så skal scrive et fint, trygt og helt basic brukersystem for deg.  :)

 

Det første du må ha er en form der brukeren skriver inn brukernavn og passord. Du sa du hadde laget siden for et firma, så jeg antar du kan webdesign (HTML). Ergo skriver jeg form-koden så enkel som mulig.

 

login.php

<?php
session_start();  //denne er nødvendig for å bruke sessions og skal komme først i fila.
if(empty($_SESSION['user']))  //dersom $SESSION['user'] er tom er ingen innlogget
{
   //brukerverifisering
   if(!empty($_POST['username']) && !empty($_POST['password']))
   {  //dersom username og password har blitt postet, prøv innlogging
       $users = file('users.txt');  //les alle brukere fra fila users.txt
       foreach($users as $temp)  //loop igjennom filens innhold
       {
           $b = explode('|', $temp);
           if($b[0] == $_POST['username'] && $b[1] == md5($_POST['password']))
           {  //hvis brukernavn og passord er rett...
               $_SESSION['user'] = $b[0];  //...sett $_SESSION['user'] til brukernavnet
               Header('Location: login.php');  //hopp til login.php
           }
       }
   }
   //slutt på brukerverifisering

   //form for å logge inn, kommer opp dersom ingen er innlogget
?>

<form action="login.php" method="post">
<input type="text" name="username" /> <br />
<input type="password" name="password" /> <br />
<input type="submit" value="Logg inn" /> <br />
</form>

<?php
}
else
{
   echo 'Logget inn som: '.$_SESSION['user'];  //skrive hvilken bruker som er logget inn
}
?>

 

Akkurat brukerverifiseringen er kanskje litt plundrete å forstå, men file() leser inn innholdet av en fil. Hver linje i filen havner i et eget array. Dersom filen test.txt inneholder følgende:

 

hei

deg!

 

og man i php kjører $a = file('test.php'); vil dette bli resultatet:

 

$a[0] = hei

$a[1] = på

$a[2] = deg!

 

Explode gjør omtrent det samme. Dersom jeg kjører følgende i php...

 

$a = explode('|', 'hei|på|deg!');

 

...blir resultatet...

 

$a[0] = hei

$a[1] = på

$a[2] = deg!

 

 

Vet ikke om det gjorde saken noe klarere, men fortsetter uansett. :p Filen users.txt inneholder alle brukernavn, sammen med en md5-hash av brukerens passord. Dette gjør at det ikke er til hjelp for 14 år gamle scriptkiddies (eller noen andre) å lese users.txt. Slik kan den se ut:

 

PlastBox|e10adc3949ba59abbe56e057f20f883e|
milleniam|e10adc3949ba59abbe56e057f20f883e|

 

Dette er 2 brukere med brukernavnene du ser i filen, samt passordet 123456. Trenger du flere brukere legger du bare til en ny linje i fila med følgende format:

 

brukernavn|md5-hash av passord|

 

 

Sidene du skal beskytte kan du enkelt og greit starte med følgende kode:

<?php
session_start();
if(empty($_SESSION['user']))
{
   echo 'Du må være innlogget for å se denne siden!';
   exit;
}
?>

Her er sidens faktiske innhold. Dersom du ikke hadde vært innlogget hadde du aldri i verden sett dette!;)

 

 

Dette bittelille scriptet (som vi kaller makeuser.php) vil hjelpe deg å opprette brukere. Bare skriv inn brukernavn og passord, send det, kopier linja du får opp og lim den inn i users.txt.

 

<form action="makeuser.php" method="post">
<input type="text" name="username" /> <br />
<input type="password" name="password" /> <br />
<input type="submit" value="Send" /> <br />
</form>

<?php
if(!empty($_POST['username']) && !empty($_POST['password']))
{
   echo 'Lim inn følgende linje nederst i users.txt:<br />'
.$_POST['username'].'|'.md5($_POST['password']).'|';
}
?>

 

 

Edit: klumsete navn på en knapp.  :blush:

5102678[/snapback]

Skrevet

HEy plastbox, nice script du har lagt, skal prøve det når jeg kommer hjem, men går det ikke ann at "ny bruker" utomatisk blir lagt inn i users.txt filen i steden for at du må kopi/paste det inn?

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