Moin,
zuerst hoffe ich, dass ich hier richtig bin.
Ich möchte gerne meine PHP-Scripte gegen SQL-Injection sichern.
Ich bin die letzten Jahre auf PHP 5.2 kleben geblieben. Nun bin ich aber auf die neueren PHP Versionen aufgestiegen und verwende nun PDO.
Bei PHP 5.2 und mssql_query konnte ich ja einfach die escape function nutzen.
Bei PDO schaut das ja etwas anders aus.
Ich hörte, wenn ich mithilfe von STR Variblen und mithilfe von bindParam den Inhalt in meine Query bringe, müsste ich die Variablen nichtmehr Escapen.
Bsp.
Könnte mir jemand vielleicht eine genaue Erklärung geben wann ich in dem Falle escapen muss? Und ob ich bei nutzung dieser Funktion überhaupt Escapen muss?
Vielen dank.
Liebe Grüße
zuerst hoffe ich, dass ich hier richtig bin.
Ich möchte gerne meine PHP-Scripte gegen SQL-Injection sichern.
Ich bin die letzten Jahre auf PHP 5.2 kleben geblieben. Nun bin ich aber auf die neueren PHP Versionen aufgestiegen und verwende nun PDO.
Bei PHP 5.2 und mssql_query konnte ich ja einfach die escape function nutzen.
PHP Code:
function ms_escape_string($data) {
if ( !isset($data) or empty($data) ) return '';
if ( is_numeric($data) ) return $data;
$non_displayables = array(
'/%0[0-8bcef]/', // url encoded 00-08, 11, 12, 14, 15
'/%1[0-9a-f]/', // url encoded 16-31
'/[\x00-\x08]/', // 00-08
'/\x0b/', // 11
'/\x0c/', // 12
'/[\x0e-\x1f]/' // 14-31
);
foreach ( $non_displayables as $regex )
$data = preg_replace( $regex, '', $data );
$data = str_replace("'", "''", $data );
return $data;
}
Ich hörte, wenn ich mithilfe von STR Variblen und mithilfe von bindParam den Inhalt in meine Query bringe, müsste ich die Variablen nichtmehr Escapen.
Bsp.
PHP Code:
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
Vielen dank.
Liebe Grüße