Gå til innhold

hjelp til å øke sikkerheten?


Anbefalte innlegg

jeg har en enkel innloggingsside hvor action er satt til en side som inneholder koden under:

<?php
define ("HEMMELIG_BRUKERNAVN", "Hei");
define ("HEMMELIG_PASSORD", "hopp");
if ( $_POST['passord'] == HEMMELIG_PASSORD && $_POST['brukernavn'] == 
HEMMELIG_BRUKERNAVN) {
echo "Velkommen";
echo "<a href='side2.php'>side2</a>";
}
else {
echo "Feil brukernavn eller passord";
}
?>

problemet her er at hvis du skriver side2.php i adresselinja på nettleseren så er du inne uten problemer.

 

hvordan kan jeg unngå det?

Lenke til kommentar
Videoannonse
Annonse

Er vel kanskje ikke så rart når du sannsynligvis ikke har noen sjekk på om vedkommende er innlogget eller ei? Sagt på en lite annen måte, du må nok lage det litt mer avansert enn som så ;) En litt "primitiv" måte vil være å bruke session og sjekke om vedkommende egentlig er logget inn på den måten.

Lenke til kommentar

Legg til session_start() øverst i begge filene. Hvis de har skrevet riktig passord så setter du $_SESSION['access'] til 1. Den variablen vil holde seg helt til du lukker nettleseren, på tvers av sidene. I side2.php sjekker du om $_SESSION['access'] er lik 1, hvis ikke: "Access Denied"! :)

Lenke til kommentar
Bruk "===" i stedet for "==", da blir brukernavn og passord case-sensitive. ;)

6030125[/snapback]

 

a == b bruker du for å sjekke at a har lik datainnhold som b.

 

a === b bruker du for å sjekke at a og b har lik datainnhold OG samme datatype.

 

har lite med case sensitivitet som så å gjøre, men det hjelper kanskje på.

Lenke til kommentar
Legg til session_start() øverst i begge filene. Hvis de har skrevet riktig passord så setter du $_SESSION['access'] til 1. Den variablen vil holde seg helt til du lukker nettleseren, på tvers av sidene. I side2.php sjekker du om $_SESSION['access'] er lik 1, hvis ikke: "Access Denied"! :)

6027263[/snapback]

Finnes det noen måte å injisere noe i session? Dvs. lagres det noe annet enn SID på klientens maskin? (Vet SID også kan sendes ved url, men teorien blir den samme)

 

Når du sammenligner strenger, bruker du strcmp-funksjonene.

Du kan bruke === også, men aldri ==, nettopp fordi === sammenligner type.

1 == "1" <- burde det være true?
int(1) == string("1")
0x1 == 0x31

 

1 === "1" <- false

Lenke til kommentar

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å
×
×
  • Opprett ny...