Kent.JMedlem sedan aug. 2001153 inlägg Tycks vara nåt jag missat med injunction, finns det några smarta tips på hur man skyddar sig mot detta?
exempel...
$id = $_GET["id"];
$SQL = "select * from tabell where id=".$id;
$result = mysql_query($SQL) or die (mysql_error());
Vad är det som hindrar användare att skriva vad som helst i $id?
I just detta fallet så skulle väl kanske $id = (int) $_GET["id"]; vara en bra lösning... men nån mer generell lösning som inte bara funkar på en int?
Kanske bara jag som är seg idag.. vem vet :r
function dbclean($intext){
$intext= str_replace( "'", "\\\'", $intext);
$intext= str_replace( '"', '\\"', $intext);
$intext = trim($intext);
return $intext;
}
Följande kod använder jag själv. Har dock inte blivit utsatt för nåt värre angrepp, men jag tror det är väl fungerande kod.
Vill du kod för att skydda utdata från html så har jag det också.
Kent.JMedlem sedan aug. 2001153 inlägg dbclean känns ganska mkt som addslashes?
Då kanske man inte kan skriva vad man vill längre... men kan fortf skriva till "saker" :OO
exempel: fil.php?id=1 and user_level=10
Oh... Den funkar inte som den ska i detta fall nä!
Om man sätter ' ' runt $id bör det väl funka, alltså:
$id = dbclean($_GET["id"]);
$SQL = "select * from tabell where id='" . $id . "'";
$result = mysql_query($SQL) or die (mysql_error());
Vet dock inte om denna syntax godtas i SQL...
Kent.JMedlem sedan aug. 2001153 inlägg Syntaxen är nog ingen fara... mysql tycks konvertera typer automagiskt.
Betyder att man får gå genom alla filer.. och alla sql satser som används?
Jag som körde genom add_slashes och en mysql-klass för att hantera alla anrop... för att slippa just det... chi fick jag.
Såvida det inte finns flera lösningar på problemet?