)))Все правильно это оно и есть. И дополнительно экранировать эти параметры не требуется.Fortop
как же...
$sth->bindParam(':calories', $calories, PDO:ARAM_INT);
$sth->bindParam(':colour', $colour, PDO:ARAM_STR, 12);
или я что-то не так понял
Инъекции и приведение к типам - вещи разные. Надо разделять мух и котлет.Перед обработкой формы запускаю функцию , которая просматривает $_POST и значение всех переменных приводит к нужному типу в соответствии с префиксом, заодно удаляет все недопустимые символы.
А потом эти переменные можно напрямую подставлять в mysql, не боясь SQL-инъекций
insert into table set a=?s, b=?i
Это никому не нужно.Таким образом в $_POST всегда проверенные данные, приведенные к нужному типу
ты, как и другие новички
На форуме с: Apr 2003

а как приведение к нужному типу и удаление недопустимых символов могут предотвратить sql-инъекцию? или XSS ?Автор оригинала: Leonid
Перед обработкой формы запускаю функцию , которая просматривает $_POST и значение всех переменных приводит к нужному типу в соответствии с префиксом, заодно удаляет все недопустимые символы.
/**
* Очищает request от пробелов и слэшей.
*
* @access private
* @param array
* @return void
*/
private static function clearRequest(&$in)
{
if ($in)
{
foreach ($in as $key => $value)
{
if (is_array($value))
{
self::clearRequest($in[$key]);
}
else
{
$value = trim($value);
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
$in[$key] = $value;
}
}
}
return $in;
}
// .....
{
$this->request_data = self::clearRequest($_REQUEST);
$this->post_data = self::clearRequest($_POST);
$this->get_data = self::clearRequest($_GET);
$this->cookie_data = self::clearRequest($_COOKIE);
}
— ты текстовый редактор не реализуешь. Но это не особо важно, т.к. тут вопрос в другом: почему ты пихнул trim() именно в этот метод. Что такое «clearRequest»? Я это просто считаю неверным в корне как-то искажать данные, считая их «чистыми», «безопасными» или «хорошими». Это уже не request, это нечто иное.Автор оригинала: triumvirat
trimming надо делать в 100% случаев