/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Login: SQL-Injection
Fra : Christian Hjort


Dato : 14-10-04 07:16

Hejsa NG.

Jeg har et multi-login system hvor brugerne skal kunne logge ind,
dette kan de dog lidt for nemt og på de forkerte brugernavne via.
SQL-Injection. Har forsøgt med addslashes() men som om den ikke
registrerer det. Nogen der kan give en hånd?


login-ok.php:

<?php
require("../includes/config.php");
$login = &$HTTP_POST_VARS['login'];

if(empty($login)) {
   echo 'Denne side kræver login adgang'; }
   else {


if(empty($brugernavn) OR empty($password)) { //Her tjekkes om ET
af felterne er tomme.
   echo 'Et af felterne er tomme'; }   
   else {
$brugernavn = addslashes($_POST['brugernavn']);
$password = addslashes($_POST['password']);

$query = "SELECT id, brugernavn, password FROM users WHERE
brugernavn = '".$_POST['brugernavn']."' AND password=
'".$_POST['password']."'";
$result = mysql_query($query)or die("MySQL fejl: " .
mysql_error());
$log = mysql_fetch_array($result);

if ($_POST['brugernavn'] = $log['brugernavn'] &&
$_POST['password'] = $log['password']) {
   

setcookie("bruger", "$brugernavn", time()+2592000);
setcookie("pass", "$password", time()+2592000);


header("location: index.php");
}

else {
echo 'forkert password';
}

}
}
?>

-------------------------------------------------------

login.php(formen kun):

<form action="login-ok.php" method="post">
<table>
<tr>
<td>
Brugernavn:</td> <td><input type="text" name="brugernavn" /></td>
</tr>
<tr>
<td>
Password:</td> <td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</form>


Hva jeg gerne vil have folk ikke kan køre SQL sætninger for at
logge ind, har formentlig overset en lille ting, men har stirret
mig blind på det.



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Troels Arvin (14-10-2004)
Kommentar
Fra : Troels Arvin


Dato : 14-10-04 07:40

On Thu, 14 Oct 2004 06:16:11 +0000, Christian Hjort wrote:

> $brugernavn = addslashes($_POST['brugernavn']);
> $password = addslashes($_POST['password']);
>
> $query = "SELECT id, brugernavn, password FROM users WHERE
> brugernavn = '".$_POST['brugernavn']."' AND password=
> '".$_POST['password']."'";

Du benytter jo ikke de "neutraliserede" strenge i din SQL.

(Og der er i øvrigt ingen grund til at SELECT'e brugernavn og password,
da du jo allerede kender dem.)

Din forespørgsel kunne fx. omskrives til:

$SQL="
SELECT id
FROM users
WHERE brugernavn = '$brugernavn'
AND password= '$password'
";
$result = mysql_query($SQL) or die('MySQL fejl: '.mysql_error());

--
Greetings from Troels Arvin, Copenhagen, Denmark


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste