| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > проверка введенных данных |
| Автор: Артем125 20.9.2009, 13:44 | ||
Посмотрите, все ли учтено от инъекций и не создаст ли трудностей. Переданные данные - это любой текст, (а также теги description, keywords,title и т.д) который будет общедоступно заполнять статическую Интернет страничку
|
| Автор: Ипатьев 20.9.2009, 13:57 |
| Вопросы. 1. Что такое "статическая Интернет"? 2. За что мучать сервер бесконечным циклом, если к скрипту обратились не через форму? 3. Зачем каждое поле проверять по три раза, а не один? 4. Удалось бы вам написать свой вопрос на этом форуме, если бы он проверял вводимый текст на "недопустимые" символы? |
| Автор: Артем125 20.9.2009, 14:03 |
| 1) Интернет страничка, контент забивается через Веб интерфейс. Основные теги и контент 2) второй вопрос не понял(( 3) так удобней все читать, группировать, ведь не одна переменная, а около десяти 4) вот потому и задался я таким вопросом )), для тегов это актуально, для контента видимо ограничивает |
| Автор: Ипатьев 20.9.2009, 14:11 |
| 1. Старайтесь писать более внятно. Если имеется в виду страница, то надо писать это слово. Если эта страница не лежит в готовом к отдаче виде, а формируется скриптом из базы данных, то это не статическая страница, а динамическая. Что значит "основные теги"? Насколько я вижу, проверка на недопустимые символы не пропустит ни одного. 2. Зачем в строках 2-4 организован бесконечный цикл? 3. Неужели 30 одинаковых проверок удобнее, чем 10? Ну, на вкус и цвет... 4. Я не понял. Кому задан вопрос? Для кого эти символы "недопустимые"? Для незнакомого дяди в интернете? или все-таки для собственного произведения? Кроме вас никто не знает, какие на вашей "статической интернете" символы допустимы, а какие - нет. Если данные вводятся общедоступно, то достаточной защитой от всяких яваскрипт-гадостей будет применение функции htmlspecialchars() при выводе данных. При этом все теги, и основные, и не основные, будут выведены текстом, а не обработаны браузером. |
| Автор: Артем125 20.9.2009, 14:23 |
| 1) Простите, заработался. Есть форма, в которую вводят данные. Эти данные заносятся в б.д., оттуда при формировании динамической страницы попадают в теги title, description, keywords, основной контент этой страницы. 2) Это защита от подделки заголовков(возможно не прав). Если в $_POST не передано имя кнопки отправить ("латинские буквы и цифры"), то значит функция вызвана неправильно, может по ошибке. И кстати, почему бесконечный цикл. Если данные не верны, то редирект на главную страницу, а там ожидать действий пользователя 3) - 4) Главная задача часть данных обработать с защитой от инъекций и тегов, контент же только от инъекций и некоторых тегов, например td. Ведь после проверки данные сохраняются в базе |
| Автор: Ипатьев 20.9.2009, 14:41 |
| Вы полагаете, что $_SERVER['PHP_SELF'] - это так на РНР называется главная страница? попробуйте найти описание этой переменной. каких инъекций? а зачем нужен <p>? |
| Автор: Артем125 20.9.2009, 14:50 | ||
Инъекции, вроде таких
<p> это тег абзаца, например, если не доработаны стили в шаблоне той страницы, в которую попадают обработанные данные из бд. Вообще, попробую выразиться по другому: все переданные данные должны обрабатываться от инъекций. Часть из них должна очищаться (или как угодно, экранироваться и т.п.) от тегов, другая часть лишь от избранных тегов (например <td><tr>). |
| Автор: Ипатьев 20.9.2009, 14:52 |
| От sql инъекций защищает строка 48 приведенного кода. Больше ничего не нужно. Про стили не понял. Этот человек, который вводит информацию в форму, вот так и пишет - со стилями и параграфами? |
| Автор: Артем125 20.9.2009, 14:59 |
| Про стили не понял. Этот человек, который вводит информацию в форму, вот так и пишет - со стилями и параграфами? Ну например, сделал я шаблон. Вот так человек и пишет - с параграфами, а кто его знает, ну например, надо ему 2 строки отступить, вот он и добавляет тег <p> "текст про чебурашку ...... <p></p> И вот тут он нагнал серого волка/// " Получается строка 23 избавляет от тегов, да?, 48 от инъекций. А как бы избавиться от части тегов, например <td>,что бы конструкция из таблиц не полетела? |
| Автор: Ипатьев 20.9.2009, 15:05 |
| а почему этот человек просто два раза в текстарии на ентер не нажмет? |
| Автор: Артем125 20.9.2009, 15:07 |
| ну может и нажмет, а может и не нажмет , в конце концов не сообразит Все же, может ему какие-то теги понадобятся, что ему тогда и мне делать и тут я прав? что строка 23 избавляет от тегов, да?, 48 от инъекций. |
| Автор: Артем125 20.9.2009, 15:11 | ||||
| А где здесь проверяется нажатие кнопки "Сохранить"? ага, конечно, вот форма для отправки
// Если не нажата кнопка X234(Сохранить), то функция вызвана по ошибке
Спасибо за ссылку |
| Автор: Ипатьев 20.9.2009, 15:12 |
| Откуда у вас в форме возьмется человек, которому придет в голову писать в нее <p></p>? Вам же не приходит? Задача валидации html - сложная и муторная в решении. Оно вам надо? Пусть пишут только текст. Если хочется хитрого оформления для фанатиков - bb-code или Wiki-разметка. |
| Автор: Артем125 20.9.2009, 15:13 |
| Ну вообще - то. Если сломают авторизацию, не смогут базу попортить., может и не прав конечно, вообще то это админка. Просто хотел еще в добавок сделать защиту от дурака |
| Автор: Ипатьев 20.9.2009, 15:14 |
| Simpliest, поскольк документацию все равно никто не читает, то надо рядом со ссылкой всегда обязательно дублировать, что если функция вызывается с исключениями, то для той задачи, ради которой она обычно используется, strip_tags становится абсолютног бесполезной Добавлено @ 15:17 тегами базу попортить невозможно. в админке обычно оставляют возможность вводить любые теги. если это админка, то надо определиться, какого рода текст будут туда вводить. сначала определиться, а потом уже думать, как его обрабатывать будут. |
| Автор: Артем125 20.9.2009, 15:21 |
| А что бы получить чистый текст без тегов подойдет строка 23? |
| Автор: Ипатьев 20.9.2009, 15:23 |
| нет. эта строка позволяет получить ошибку |
| Автор: Артем125 20.9.2009, 15:25 |
| редирект, если введен тег?, да? |
| Автор: Ипатьев 20.9.2009, 15:26 |
| эта строка не позволяет получить чистый текст без тегов она позволяет получить Редирект в обратку |
| Автор: Артем125 20.9.2009, 15:30 |
| Понял, Вам Ипатьев респект и уважение за ответы и терпение! |
| Автор: Gold Dragon 21.9.2009, 13:16 |
| может я просмотрел по тексту это замечание... но с чем сам сталкивался.. Если должны оставаться кроме чистого текста ещё и тэги, то с "обрезание" строки не всё так просто. Ты можешь обрезать по тэгу или, например, отрезать закрывающийся, а потом страница в будущем у тебя явно будет не валидной и скорее всего поползёт. Наверное, самый лучший способ - это контролировать количество символов при вводе или же сначала предупредить при отправке, а потом обрезать |
| Автор: Strilo4ka 22.9.2009, 22:09 | ||
| воше то от скул иньекции строка в запросе два раза пропускаеться у вас Артем125, !!! Ну в прынцыпе ничего страшного, но по умолчанию пхп настроен так что он сразу фильтрует, тоэсть "магические кавычки " включены. Все даные, неважно как они передаються, то ли гет, пост, в куках они фильтруються (екранируються). Можно просто сделать так если директива включена то не фильтруем, а если выключена то пропускаем через mysql_escape_string(). А воше мне еще нравится функция intval() она помогает тоже. Но у нее есть один недостаток. Она переводит строку в число О. Тоесть всегда будет выводится одна запись. Ну и substr в помощь !!! Добавлено через 5 минут и 13 секунд
а еще после sttip_tags, trim еще можно через htmlspecialchars пропустить |
| Автор: Strilo4ka 22.9.2009, 22:30 | ||
и когда запрос выполняеться не мешало б @ поставить перед mysql_query на всякий случай!!! ООО и еще одна идеяка появилась, допустим хакер скопировать форму и хочет подменять даные, то можна написать функции защиты от заполнения маленькую (в нете встречал) типа такой вот
а потом просто в скриптах где форма поподключать... С другими какими то переменными масива сервер еще поиграться можно !!! |
| Автор: Ипатьев 22.9.2009, 22:46 |
| это чудовищно. ТАКОЙ каши в голове я никогда в жизни не встречал. |
| Автор: Strilo4ka 22.9.2009, 23:02 |
| а какая тут каша??? |
| Автор: Simpliest 22.9.2009, 23:11 |
Гречневая вперемешку с пшенной. |
| Автор: Ипатьев 22.9.2009, 23:42 |
| Strilo4ka, если вы напишете эти свои "рекомендации" отдельным постом, то я постараюсь объяснить ошибки. |