Gå til innhold

Hvor sikkert er dette login scriptet?


Anbefalte innlegg

Skrevet

Hey, har laget et lite loginn script å lurer på hvor sikkert det er evt. hvordan andre kan komme inn uten brukernavn/passord

 

<?php
session_start();
if (!empty($_POST['username']) && !empty($_POST['password'])) {
      if (($_POST['username'] == "brukernavn") && (md5($_POST['password']) == "md5 hash av passord")) {
              $_SESSION["access"] = "Admin";
              header("Location: menu.php");
      }
      
}
else {
echo "Feil Brukernavn eller Passord! Klikk <a href='login.form.php'>her</a> for å prøve igjen!";
}
?>

 

og

<?php
if ($_SESSION["access"] !== "Admin") {
      echo "Feil brukernavn eller passord, klikk <a href='login.form.php'>her</a> for å prøve igjen";
}
else {
masse kode
}
?>

 

på alle sidene, er det da mulig og komme seg inn?

Videoannonse
Annonse
Skrevet

Ingenting er 100 % sikkert egentlig, det er fullt mulig å opprette en session som er lik din session med et annet script (men da må man finne ut hva den heter da, og det er kanskje ikke så enkelt..?)

 

Dessuten er md5 veldig enkelt å cracke :)

Skrevet
Dessuten er md5 veldig enkelt å cracke :)

7059942[/snapback]

Hvordan?

Det går an å bruteforce en md5 hash, men det går på alle. Og hvis du tenker på rainbowtables kan man fikse det med å legge til et salt.

Skrevet
Dessuten er md5 veldig enkelt å cracke :)

7059942[/snapback]

Hvordan?

Det går an å bruteforce en md5 hash, men det går på alle. Og hvis du tenker på rainbowtables kan man fikse det med å legge til et salt.

7060612[/snapback]

Om man legger til et salt så er det vanskeligere ja, men uten salting så tar det 5 sekunder med rainbowtables

 

Nå hadde ikke han salting i scriptet sitt da :)

Skrevet
One thing to note in comparison with ==

 

When we make a comparison with == php automaticly converts strings to integers when either side of the comparison is an integer, f.e.:

<?

$value = 0;

if($value == "submit") {

  echo "Let's submit";

}

?>

Above would be succesful, since "submit" is converted to an integer (eq 0) and the equation is would return true; (that's why (1 == "1submit") would also return true)

 

That's why we should use strcmp or === (checks type also), for string comparisons.

 

So my conclusion is that when comparing string, you'd better not make use of == (use strmp or === instead). For integer comparisons the == equation can be usefull, since our values will always be casted to an integer (1 == "1" returns true).

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