Gå til innhold

hjelp til å øke sikkerheten?


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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.

Skrevet

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"! :)

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

Skrevet

DarkSlayer:

Oi! Har programmert PHP i flere år nå, med både større og mindre prosjekt og jeg har alltid trodd at "==" har vært case-insensitive... :blush:

Skrevet
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

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