|
|
|
| вот функция для обработки строк перед использованием строк в SQL-запросах. Есть ли недочеты?
function to_sql($str,$size)
{
$str=trim($str);
$str=substr($str,0,$size);
$str=htmlspecialchars(stripslashes($str));
$str=str_replace("'","'",$str);
if(!get_magic_quotes_gpc())
{
$str=mysql_escape_string($str);
}
else
{
$str=$str;
}
return $str;
}
|
| |
|
|
|
|
|
|
|
для: Alexneo
(07.09.2005 в 22:14)
| | Ну во первых советую пропускать через htmlSpecialChars после извлечения из БД, точнее перед выводом в браузер. Во вторых строки:
не нужны абсолютно. Потом не очень мне нравится строка
$str=substr($str,0,$size);
| Зачем обрезать данные пользователя. Лучше просто предупредить его чтобы он не вводил слишком длинные данные а если ввел, тогда сказать чтоб поменьше ввел.
Исходя из всего выше сказанного могу предложить тебе код который по моему мнению обеспечивает надежную защиту от SQL - инъекций.
<?
function to_sql($str)
{
$str=trim($str); // это скорее на защита а предусмотрительность
$str=str_replace("'","'",$str); // эту сроку можно впринципе и выкинуть
if(!get_magic_quotes_gpc())
$str=mysql_escape_string($str);
return $str;
}
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(07.09.2005 в 23:23)
| | Лучше идти от обратного: не исключать вредные символы из введенных или выводимых строк, а пропускать лишь полезные. Для этого стоит воспользоваться функцией регулярных выражений preg_match ();
Например:
<?
$str = preg_match("/[a-zA-Zа-яА-Я0-9\-,.:;]*/i", $str);
?>
|
А будет еще лучше, если вы загляните на страничку:
http://softtime.ru/info/articlephp.php?id_article=35 | |
|
|
|