Sanitera strängar i PHP som ska användas i SQL-anrop

Här diskuteras programmering och utveckling
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Sanitera strängar i PHP som ska användas i SQL-anrop

Inlägg av m!rage »

Jag har input från ett HTML-formulär som ska ingå ett SQL-anrop, därför vill jag sanitera bort allt som inte är alfanumeriska tecken.
Har följande mycket enkla exempel:

Kod: Markera allt

<html>
<body>

<?php
$string = filter_input(INPUT_GET, 'string', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
echo $string;
?>

</body>
</html>
När jag sedan går in på http://localhost/index.php?string=foo1<b>_'); tas bara html-taggen bort, resultatet blir alltså

Kod: Markera allt

foo1_');
Varför blir det så?

EDIT: Lite dum fråga kom jag på efter att ha kollat i en ASCII-tabell. Men hur gör jag för att ta bort alla tecken utom bokstäver och siffror? Finns det något inbyggt filter för det?
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Sanitera strängar i PHP som ska användas i SQL-anrop

Inlägg av m!rage »

Har forskat lite i saken nu. Rätta mig om jag har fel nu, men det jag kommit fram till är:
Data som körts genom mysql_real_escape_string() anses säkert att användas i SQL-anrop?
och:
Data som körts genom filter_input(INPUT_GET/POST, 'x', FILTER_SANITIZE_STRING) anses säkert att visas på html-sidan?
Stämmer detta?
Skriv svar

Återgå till "Programmering och webbdesign"