Если в любой форме на сайте которая делает записи в БД написать
<script>alert()</script>
то он сохраяет это все в таблицу да еще и выполняется ,выскакивает окно "подтвердите действие" и т д, если при этом пропустить что то подобное через htmlspecialchars ну наверно можно поставить еще stripslashes и trim вдруг пригодится то
<script>alert()</script>
в таблицу сохраняется уже в каком то непонятном состоянии но в браузере читается нормально, так это все равно уже безопасно если сработало через
htmlspecialchars
?
главное что с этими проверками ничего не срабатывает,идет как обычный текст
Когда сохраняешь в базу данных, используй - mysqli_real_escape_string
А перед отправкой клиенту (вывод на экран) - htmlspecialchars
_____________
Принимаю заказы, писать в ЛС
Zzepish
11.09.2016 - 21:44
htmlspecialchars надо делать при выводе. Почитай про html-сущности, чтоб не пугался записей из базы!
Медведь
mysqli_real_escape_string подойдет для pdo? по моему нет)))
Медведь $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();
или у меня тут ошибки?
а мб лучше и там и там htmlspecialchars сделать? пусть и в базе фигня сохранится ну и выведем через нее?
Zzepish
11.09.2016 - 22:06
maax
pdo сама уже делает защиту от sql-инъекций! так-что mysqli_real_escape_string не нужен. htmlspecialchars только при выводе
Zzepishя читал что даже в pdo кривыми руками можно дыру сделать для sql-инъекций,ну я вроде нормально написал
Zzepish
11.09.2016 - 22:13
maax
Ну, у тебя все четко. Если делать через плейсхолдеры- то все будет кошерно)
linux_user_net
22.12.2017 - 19:23
Чтобы корректно записался в бд, советую сперва очистить или заменить спец символы пробелом, это можно сделать с помощью str_replace().
Второе удалить все пробелы trim(), и третье воспользоваться стандартной фильтрации к примеру filter_var().
Но я конечно рекомендую использовать регулярные выражения, ни очень удобны при работе со строками.
Если вы не имеете знания в области регулярных выражений, то не страшно, вполне можно обойтись и без него.
А на счет занесения в БД данных, вы должны понимать что сейчас используется ориентированный стить MySQLi , и это не значит все она защищено, данные в любом случае надо фильтровать.
don.bidon
18.03.2024 - 08:54
Писать в БД нужно именно то, что пришло, экранировать при выводе на экран. Азбука.
Бывают исключения, но не в случае вопроса ТС.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.