[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фильтрация текста
maax
Если в любой форме на сайте которая делает записи в БД написать
<script>alert()</script> 
то он сохраяет это все в таблицу да еще и выполняется ,выскакивает окно "подтвердите действие" и т д, если при этом пропустить что то подобное через htmlspecialchars ну наверно можно поставить еще stripslashes и trim вдруг пригодится то
<script>alert()</script>
в таблицу сохраняется уже в каком то непонятном состоянии но в браузере читается нормально, так это все равно уже безопасно если сработало через
htmlspecialchars
?

главное что с этими проверками ничего не срабатывает,идет как обычный текст
Миша
Когда сохраняешь в базу данных, используй - mysqli_real_escape_string
А перед отправкой клиенту (вывод на экран) - htmlspecialchars

_____________
Принимаю заказы, писать в ЛС
Zzepish
htmlspecialchars надо делать при выводе. Почитай про html-сущности, чтоб не пугался записей из базы!
maax
Медведь

mysqli_real_escape_string подойдет для pdo? по моему нет)))
maax
Медведь

    $stm = $cnt->prepare("INSERT INTO reviews (username, email, text) VALUES (:username, :email, :text)");
$stm->bindParam(':username', $revname);
$stm->bindParam(':email', $revemail);
$stm->bindParam(':text', $revtext);
$stm->execute();

или у меня тут ошибки?
maax
а мб лучше и там и там htmlspecialchars сделать? пусть и в базе фигня сохранится ну и выведем через нее?
Zzepish
maax
pdo сама уже делает защиту от sql-инъекций! так-что mysqli_real_escape_string не нужен. htmlspecialchars только при выводе
maax
Zzepish

я читал что даже в pdo кривыми руками можно дыру сделать для sql-инъекций,ну я вроде нормально написал biggrin.gif
Zzepish
maax
Ну, у тебя все четко. Если делать через плейсхолдеры- то все будет кошерно)
linux_user_net
Чтобы корректно записался в бд, советую сперва очистить или заменить спец символы пробелом, это можно сделать с помощью str_replace().
Второе удалить все пробелы trim(), и третье воспользоваться стандартной фильтрации к примеру filter_var().

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

А на счет занесения в БД данных, вы должны понимать что сейчас используется ориентированный стить MySQLi , и это не значит все она защищено, данные в любом случае надо фильтровать.
don.bidon
Писать в БД нужно именно то, что пришло, экранировать при выводе на экран. Азбука.
Бывают исключения, но не в случае вопроса ТС.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.