Проверка данных $_POST на безопасность

Статус
В этой теме нельзя размещать новые ответы.

Leonid

PHP? нет, не слышал...
Проверка данных $_POST на безопасность

Допустим, необходимо сохранить каке-то данные из POST в БД.

Если я знаю, что это просто строка, например логин, то делаю strip_tags(), обрезаю substr(), вырезаю одинарные и двойные кавычки.

Какие еще символы желательно вырезать, или что проверить, чтобы гарантировнно избавиться от SQL-инъекций?
 

Gremboloid

инженера Гр...
чтобы гарантировнно избавиться от SQL-инъекций, достаточно экранировать SQL спец-символы
 

skomoroh2

Новичок
для работы с базой использовать PDO
http://ru2.php.net/manual/en/book.pdo.php

pdo сама все иньекции режет и типы приводит через prepare-execute

например:
$sth = $db->prepare( "select * from table where id=?" );
$sth->execute( array( $_REQUEST["id"] ) );
 

Духовность™

Продвинутый новичок
Зачем вырезать то?
у новичков жуткая, дикая просто каша в голове. идиотское обсуждение в оффтопике, вынесенное из этой темы, это доказывает. интересно, кто и в каких книжках учит перед вставкой в базу делать strip_tags, htmlspecialchars и т.д.?

Если я знаю, что это просто строка, например логин, то делаю strip_tags()
Leonid запомните раз и навсегда: ничего вырезать нельзя. никогда. никакие символы. разве только концевые пробелы.

Любая схема приложения на PHP должна выглядеть так:

Пришел POST - очистили от концевых пробелов с помощью trim()
Если включены магические кавычки, удаляем слэши с помощью stripslashes().

Если есть какие-то условия к поступающим данным, делаем валидацию. В случае ошибки в текстовом поле показываем пользователю строку как есть и пишем, мол логин должен состоять из таких-то символов.

Перед сохранением в базу все данные экранируются средствами PDO или mysql_real_escape_string и кавычками

Всё. Чего сложного то?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ХакИрФсимагущий
работает тлько если соединение открыто.
Я тебя разочарую. Ты не в теме. Соединение здесь не причем.

-~{}~ 29.09.10 23:39:

И это, не надо старые темы подниматть
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху