Jag lyckas inte att säkra följande sql-fråga:
$user = db_escape($_POST['user']);
$passwd = db_escape($_POST['passwd']);
$name = db_escape($_POST['name']);
$email = db_escape($_POST['email']);
$enamn = db_escape($_POST['enamn']);
$kon = db_escape($_POST['kon']);
$alder = db_escape($_POST['alder']);
$lan = db_escape($_POST['lan']);
$sql = "INSERT INTO members(user, pass, name, email, enamn, kon, alder, lan, ip, online)
VALUES('$user', '$passwd', '$name', '$email', '$enamn', '$kon', '$alder', '$lan', '$ip', '$online')";
mysql_query($sql);
$_SESSION['sess_id'] = mysql_insert_id();
$_SESSION['sess_user'] = db_escape($_POST['user']);
Har även testat med med "htmlspecialchars", men programmet jag använder för att skanna efter brister, gnäller på "Cross Site Scripting".
Vad gör jag för fel?
Peter SMedlem sedan dec. 20025 483 inlägg Vad menar du med "program"? Webbläsaren? I sådana fall är det nog mer troligt ett JavaScript som ställer till det.
Jag kör ett program (web vulnerabilities scanner) som kollar igenom en vald hemsida efter säkerhetsbrister m.m.
Ja, jag vet att det är javascript som ställer till det.
Använder följande funktion:
function db_escape ($post)
{
if (is_string($post)) {
if (get_magic_quotes_gpc()) {
$post = stripslashes($post);
}
return mysql_real_escape_string($post);
}
foreach ($post as $key => $val) {
$post[$key] = db_escape($val);
}
return $post;
}
Men det verkar tydligen inte fungera enligt programmet.
Peter SMedlem sedan dec. 20025 483 inlägg Men om det är JavaScriptet som ställer till det så är det väl den koden du bör visa? Eller har jag missat något?
colioneMedlem sedan juni 20014 421 inlägg XSS behöver inte ha något som helst med databasen att göra. Bara dör att du escapear det som trycks in där innebär det inte att folk kan skicka in andra fula grejer som du kke presenterar på sidan.