Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ошибаешься, сударь. sql-инъекцию забабаешься здесь внедрять ;) А вот фанатеть от слешей - это нелепо. 01.03.11 01:19 Число просмотров: 7751
Автор: kstati <Евгений Борисов> Статус: Elderman Отредактировано 01.03.11 01:31 Количество правок: 2
|
Кроме того за слеши и квотирование ПЕРЕД внесением в бд прибивать надо. Если данные верны - то они и храниться должны так, как и были введены.
Попробуй-ка организовать редактирование статей при использовании addslashes, html_specialchars ДО внесеня в бд.
А текст бусть будет из одной строки:
"Tom & Jery"
отслешил, да заквотировал - получил:
\"Tom & Jery \"
Что б подобную гадость отдать в поле редактирования textarea придётся убирать квотирование вручную. И как раз на этом этапе можно легко накосячить. Особенно, если значение Magic_Quotes отличается от сервера к серверу.
Более правильный вариант:
1. проверка входных данных на соответствие ожидаемому типу.
2. избегание прямого размещения переменных в запросах. Мне понравилось решение Котерова DbSimple, как реализация функционала pg_prepare
3. Отсутствие искажения данных вносимых в бд
4. Качественная отработка вывода данных полученных из бд.
Пара примеров проверки типов:
<?
$_POST['id']="I'm c00l haxor"
$id = $_POST['id'];
$id+=0;
echo $id;
?> ---
Аналогично - проверка на заранее безопасный тип данных [0-9a-f]{32}
if (!preg_match("^[0-9a-f]{32}$i",$_POST['md5']) {
trow("mistaked md5 data, possible cracker's attack");
} ---
разумеется в sql-запрос переменные подставляться должны после квотирования необходимого для используемой субд. касательно mysql решение в лоб - mysql_real_escape, решение с удобствами - уже описал.
|
|
|