dakata__92
Super Moderator
Колеги, попаднах на един проект в който се ползва real_escape_string вместо prepare statements. Не си заслужава да отделям време за пренаписването на всичко. Търся си по-читав метод за филтриране на SQLi.
Код:
public function escape($string)
{
if (!isset($string) || empty($string)) {
return null;
}
if (is_numeric($string)) {
return $string;
}
$nonDisplayables = 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
'/\27/'
);
$data = '';
foreach ($nonDisplayables as $regex) {
$data = preg_replace( $regex, '', $data);
}
return mysqli_real_escape_string($data);
}