Spear
почемучка
обезопасить входящие данные
Добрый вечер,
у меня такая проблема возникла - делаю некоторые раздела на сайте, где пользователи смогут записывать в БД некоторые данные (например, комментарии).
Раньше об этом не задумывался (безопасность) но сейчас по-моему превращаюсь в параноика.
Единственное, что я хотел бы сейчас узнать - достаточно ли кода ниже, чтобы быть уверенным что такая переменная от пользователя не принесет мне никаких бед?:
использование:
$username = clean_value($_POST[username]);
$comment = clean_value($_POST['txt']);
Очень прошу,подскажите - все ли учтено? по идее теперь никакие данные от пользователя, прошедшие эту бработку проблем принести не должны (я имею ввиду, например, XSS или SQL-иньекцию).
Добрый вечер,
у меня такая проблема возникла - делаю некоторые раздела на сайте, где пользователи смогут записывать в БД некоторые данные (например, комментарии).
Раньше об этом не задумывался (безопасность) но сейчас по-моему превращаюсь в параноика.
Единственное, что я хотел бы сейчас узнать - достаточно ли кода ниже, чтобы быть уверенным что такая переменная от пользователя не принесет мне никаких бед?:
PHP:
function clean_value($val)
{
if ($val == "")
{
return "";
}
$val = str_replace( " ", " ", $val );
$val = str_replace( "&" , "&" , $val );
$val = str_replace( "<!--" , "<!--" , $val );
$val = str_replace( "-->" , "-->" , $val );
$val = preg_replace( "/<script/i" , "<script" , $val );
$val = str_replace( ">" , ">" , $val );
$val = str_replace( "<" , "<" , $val );
$val = str_replace( "\"" , """ , $val );
$val = preg_replace( "/\n/" , "<br>" , $val );
$val = preg_replace( "/\\\$/" , "$" , $val );
$val = preg_replace( "/\r/" , "" , $val );
$val = str_replace( "!" , "!" , $val );
$val = str_replace( "'" , "'" , $val );
$allow_unicode = "1";
if ($allow_unicode)
{
$val = preg_replace("/&#([0-9]+);/s", "&#\\1;", $val );
}
if (get_magic_quotes_gpc())
{
$val = stripslashes($val);
}
$val = preg_replace( "/\\\(?!&#|\?#)/", "\", $val );
return $val;
}
$username = clean_value($_POST[username]);
$comment = clean_value($_POST['txt']);
Очень прошу,подскажите - все ли учтено? по идее теперь никакие данные от пользователя, прошедшие эту бработку проблем принести не должны (я имею ввиду, например, XSS или SQL-иньекцию).

))