А почему краткость и безопасность с другой стороны от юзабельности и расширяемости?
Вкладывался следующий смысл:
1. Описывать какой-то отдельный момент кратко, безопасно, делая упор на производительность и безопасность, не торопиться переходить от одного к другому.
echoserialize($extract);// подготовка для занесения в базу
// написан мною в той же теме
Цитата:
Что ты пол этим имеешь в виду? Я не очень представляю, как фильтры могут навредить целостности? Которые удаляют из строки потенциально нехорошие символы вместо того, чтоб их экранировать?
Функции, типа strip_tags, или вовсе самодельные, где применяется целый комплекс проверок и вырезаний (а главное то на них всей душой и телом полагаются, как на потенциальных защитников данных, мол, прикручу очередной стрип тагс и я на небе), что ни к чему хорошему не приводит. Вот, допустим, функция, анализирующая входящие данные, которая не пропускает пробелов:
Под ущербом целостности подразумевается нарушение структуры чего-либо в результате проверки какой-нибудь очередной хлеборезкой. Или, например, когда ты прощаешь себе необходимый в передаваемом параметре символ, который вырезается твоим великим смертельным анти-хакиравским аружием.
Решила создать тему, где хотелось бы обсудить различные варианты обработки входящих данных с целью безопасности и избежания занесения в базу разного рода мусора.
Из всего этого следует несколько вопросов:
1. Какими методами вы пользуетесь для обработки форм?
2. Используете ли вы регулярные выражения для проверки правильности составления логина, или иной информации, визуальная корректность которой необходима для записи в базу данных?
3. Используете ли вы разного рода фильтры в ущерб целостности данных?
4. Чему вы отдаёте больший приоритет: краткости и безопасности, или юзабельности и расширяемости?
А вот, собственно, сомнительные моменты, которые очень часто встречаются в скриптах:
$login=stripslashes($login);// зачем это нужно, если, скажем, волшебные кавычки выключены? А иначе тот, кто захочет исковеркать свой ник, обязательно найдёт такой способ
$login=htmlspecialchars($login);// зачем преобразовывать, если всё тотчас улетит в базу? Кому ты сделаешь лучше?
$login=trim($login);// и после густой каши ещё и обрезам пробелы с обоих концов
Попробуйте поместить session_start(); в самое начало кода после <?php. А в самом коде убрать максимально возможным образом все пробелы, но без порчи логики.
А каким редактором вы пользуетесь для написания скриптов? А ещё, если есть возможность, посмотрите на то, в какой кодировке сохраняется файл, который вы редактируете. Вот тема (Champion предупреждает): http://forum.php.su/topic.php?fo...1&topic=3026
И там в самом низу написано, что нужно:
Цитата:
Короче, скрипты, написанные в UTF-8 следует сохранять без BOM и во многих текстовых редакторах есть эта возможность.
echo'Есть у нас уже один '.htmlspecialchars($user_login).'. Попробуйте выбрать другой логин.';
}
(Добавление)
Antosha пишет:
Впринципе не мешало бы и тут создать такую темку=)
Ну всысле на примерах же легче учиться)
Кстати, хорошая идея.
Речь идёт об уроках, посвящённых написанию приложений, ну и, соответственно, о заданиях для пользователей. Как пример (по первоисточнику вышеописанного кода): http://phpforum[dot]ru/index.php?showtopic=19168