Avatar billede mc.lucifer Praktikant
20. juli 2005 - 11:18 Der er 5 kommentarer og
1 løsning

Er min Login funktion rigtig nok ?

Jeg har lavet en login funktion, for førstegang selv, før i tiden har jeg bare genbrugt en jeg fik af en i året 2000. Nu har jeg så forsøgt mig selv for også at lære det !

Jeg har lavet nedenstående kode er den rigitg nok lavet ?

Jeg kan ikke få den til at skrive "Du er ikke logget ind" Howcome ?



<?
If (isset($Quicklogin))
{
/* Validate of user */
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("database", $database);
$user = mysql_query("select * from userlogin where Username = '$Username'");
$userarray = mysql_fetch_assoc($user);
$usercount = mysql_num_rows($user);
If ($usercount >= 1)
{
$row = 1;
do {
If ($Username == $userarray['Username'] and $Password == $userarray['Password'])
{echo "Du er logget ind";}
else
{echo "Du er ikke logget ind";}
}
while ($row <= $Usercount);
$row++
;}
else
{};}
?>

MC
Avatar billede fennec Nybegynder
20. juli 2005 - 11:33 #1
Jeg ville tage password med på selecten:

If (isset($Quicklogin))
{
/* Validate of user */
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("database", $database);
$user = mysql_query("select * from userlogin where Username = '$Username' and Password = '$Password'");
$usercount = mysql_num_rows($user);
If ($usercount >= 1)
{ echo "Du er logget ind";}
else
{ echo "Du er ikke logget ind";}
}

Har du husket addslashes() funktionen på $Username så du undgår problemer med ' tegnet??
Avatar billede fennec Nybegynder
20. juli 2005 - 11:34 #2
addslashes() skal selevølgelig også på $Password...
Avatar billede mc.lucifer Praktikant
20. juli 2005 - 11:34 #3
Det med addslashes forstår jeg ikke

Hvad er det

MC
Avatar billede Slettet bruger
20. juli 2005 - 12:55 #4
Brug aldrig "SELECT *" ! - SQL Injections kunne udnyttes.
http://www.vbmysql.com/articles/security/sqlinjection.html

--
pacroon
Avatar billede fennec Nybegynder
20. juli 2005 - 13:41 #5
I bund og grund handler det om ' tegnet, som skaber problemer hvis det indgår i tekster som bruges sammen med sql-sætninger.

Tag f.eks denne sætning:
"insert into enTabel(tekstKolonne) values ('tekst med ' tegnet')"

Databaser ved ikke hvor teksten slutter. Det kan så bruges til at "hacke" et login. Forstil dig at en bruger skriver dette som input:
username: "" (ingenting)
password: " ' or '2'='2"

Med mit eks bliver sql-sætningen til:
"select * from userlogin where Username = '' and Password = ' ' or '2'='2'"

Denne sql henter ALLE rækker i tabellen, og derfor bliver en bruger logget ind. addslashes() funktionen tilføjer \ foran alle ' tegn, så sql'en bliver til:
"select * from userlogin where Username = '' and Password = ' \' or \'2\'=\'2'"

Denne vil kun matche dem hvor navnet er "" og password er "' or '2'='2".

Derfor skal du ALTID bruge addslashes() funktionen omkring alt tekst som skal i en sql-sætning. Om det så er en insert, select eller update...

Da du åbentbart ikke har den på nu, bliver mit eks til:
user = mysql_query("select * from userlogin where Username = '".addslashes($Username)."' and Password = '".addslashes($Password)."'");
Avatar billede mc.lucifer Praktikant
29. januar 2006 - 20:47 #6
Jeg er igang med at lukke mine snart alt for mange åbne spørgsmål "Det er meget pinligt" så derfor om mit spørgsmål er aktuelt eller ej, så deler jeg point ud på de der har svaret, Er der nogle der føler sig snydt må i lige kontakte mig i spørgsmålet.
Undskylder mange gange for den til tider lange svar tid.

MC
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