Avatar billede or.han Nybegynder
20. november 2005 - 22:39 Der er 8 kommentarer og
1 løsning

Sikker login

Hej.
Jeg har læst et par artikler på webcafe.dk om hvordan man kan lave login, men de nævner selv, at hvis det skal bruges i et rigtigt projekt, så bør scriptet forbedres og justeres.

Jeg undrede mig så over hvad "hackere" kunne gøre. Fx kan de finde .csv filen med brugerinformationer, men dette kan man jo undgå vha. ændringer i .htaccess.

En forbedring kunne være at bruge kryptering, men hvad er det helt præcist? Når jeg hører ordet tænker jeg at det er nogle "hemmelige" informationer, som bliver lavet om til mærkelige tal/tegn/bogstaver.

Og en sidste ting, som ikke har noget med det ovenstående at gøre, hvordan tjekker man (mest korrekt) om et inputfelt er udfyldt?
Jeg lærte først at det var ved at bruge isset(), men da jeg så at bare ved at bruge !(udråbstegn) foran variablen, kunne det også lade sig gøre. I dag er jeg dog løbet inde i nogle problemer forårsaget af at jeg brugte !(udråbstegn).

På forhånd tak
// or.han
Avatar billede hmortensen Nybegynder
21. november 2005 - 00:52 #1
isset() bruges til at tjekke om en variabel er sat, ikke om den er udfyldt.

Fx. "index.php?id=" her er id sat, men tom. Du kan da tjekke med empty() om en variabel er tom.

Du kan hashe en variabel:
$md5Pass = md5($pass);
Avatar billede or.han Nybegynder
21. november 2005 - 14:22 #2
Hvad betyder hashe??

Så jeg bør egentlig bruge isset() til fx $_POST['etFelt']?
At tjekke om den er sat, betyder det om den er defineret?
Avatar billede spectre Nybegynder
21. november 2005 - 16:16 #3
>Hvad betyder hashe??

Når man hasher en streng, bruger man en masse matematiske udregninger til at generere et (næsten) unikt 'hash' (et md5 hash ser fx sådan ud: d41d8cd98f00b204e9800998ecf8427e), der ikke kan konverteres tilbage til selve strengen, men du kan kontrollere om en brugers password-hash (som ligger i din database fx) er identisk med det password han har tastet ind i din login-form:

$org_password_hash = md5('password');
$test_password_hash = md5($_POST['password']);

if ($org_password_hash==$test_password_hash) {
  // rigtigt password
}

PS. hashes (ihvertfald md5-hashet) er case-insensitive

>Så jeg bør egentlig bruge isset() til fx $_POST['etFelt']?

ja

>At tjekke om den er sat, betyder det om den er defineret?

ja
Avatar billede spectre Nybegynder
21. november 2005 - 16:17 #4
wikipedia link til md5: http://en.wikipedia.org/wiki/MD5
Avatar billede or.han Nybegynder
21. november 2005 - 16:38 #5
Nåh det er altså noget jeg kan bruge til at lave et sikkert login med? (altså md5 og hashe)

Men hvorfor kan man ikke bare have et password stående i en .csv fil uden at det er krypteret?
Avatar billede spectre Nybegynder
21. november 2005 - 17:00 #6
det kan du såmænd også, men som du skriver at de også nævner på webcafe.dk: 'at hvis det skal bruges i et rigtigt projekt, så bør scriptet forbedres og justeres.'

hvis det skulle lykkes for hackere at få fat i dine passwords, er det alt andet lige nemmere for dem at læse dem i clear-text frem for at de skal 'bryde' din password-hashes vha ex bruteforce el dictionary attack...
og sikkerhed går jo ud på at gøre det sværest muligt for hackere at bruge din side på en uhensigtsmæssig måde
Avatar billede or.han Nybegynder
21. november 2005 - 21:23 #7
Har du et link til et sted, hvor der står mere om sikkerhed, kryptering osv. med PHP/mySQL?? Eller har du nogle tips til hvad jeg kan gøre for at gøre sider mere sikre?

Hvis man sætter !(udråbstegn) foran en variabel i en if-sætning, betyder det så ikke om den er ligmed false??
Avatar billede spectre Nybegynder
22. november 2005 - 14:13 #8
> Har du et link til et sted, hvor der står mere om sikkerhed, kryptering osv. med PHP/mySQL?? Eller har du nogle tips til hvad jeg kan gøre for at gøre sider mere sikre?

prøv at søge på google efter fx 'php secure login script mysql'


>Hvis man sætter !(udråbstegn) foran en variabel i en if-sætning, betyder det så ikke om den er ligmed false??

jo - et udråbstegn giver den omvendte bool(true eller false)-værdi

$var1 = true;
$var2 = false;

$var1 == !$var2 (her står der true == true)
!$var1 == $var2 (her står der false == false)
Avatar billede or.han Nybegynder
22. november 2005 - 22:54 #9
Tak for hjælpen spectre. Det er faktisk langt tid siden jeg på eksperten har fået så god hjælp og vejledning samt svar på mine små spørgsmål!! Mange tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester