![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
linuxoid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Здравствуйте коллеги!
Мне сложно сформулировать вопрос, поэтому и найти на него ответ в поиске форума я не смогу... Хочется узнать с вашего опыта в данной области. Как максимально обезопасить форму от недоброжелателей и взломщиков. Т.е. это проверка на валидность/корректность и на вредоносность введенных данных. Какие меры предпринять, чтобы избежать неприятностей. Пример: ограничить макс. кол-во символов для ввода номера телефона. Например не более 10. Проверка на e-mail - простенькая и так же с ограничением. Например не более 100 символов. А вот как обработать текст правильно?? Чтобы избежать таких символов, как ; или проигнорировать скрипт или другие возможные варианты... Надеюсь вы понимаете о чем идет речь... Буду рад от вас услышать хотя бы советы или код. Спасибо. Это сообщение отредактировал(а) linuxoid - 3.7.2009, 18:19 |
|||
|
||||
morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
Ничего не надо "обезопасивать", никакие данные из формы не могут быть опасны, опасно не правильное их использование... Подробности: http://phpfaq.ru/slashes |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
используй в обработчике функцию preg_match
И ей передавай регулярные выражения проверки на корректность данных. -------------------- Всем добра ![]() |
|||
|
||||
patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 26 Всего: 40 |
1. register_globals = off
2. эскейпить входные данные если ожидается строка - mysql_escape_string(); 3. фильтровать теги 4. если ожидается число - приводить его к нужному типу - intval(); floatval(); одним словом - все шо подставляется в запрос, необходимо обрабатывать -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
patap, вредные советы ?
Тогда давайте ещё дальше пойдём, отменим любой пользовательский ввод. В прочем о чём это я, давайте лучше вообще не будем использовать РНР и будем делать сайты только в статике... Хотя нет зачем, давайте вообще выключим компьютеры, нет компа нет проблем ))) Сразу баш вспоминается "читаю ТЗ, заказчик просит на всякий случай после проверки если в поле телефона были только цифры привести их к числовому типу, так на всякий случай, для безопасности" Или вот
|
|||
|
||||
patap |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 26 Всего: 40 |
допустим есть такое
почему нельзя сделать так
и отослать на сервер? зачем это эскейпить, если мы однозначно знаем что тут будет число? Или я тут ошибаюсь? ну по крайней мере, я так всегда делаю
допустим ожидаем сообщение на форуме, в сообщение вставляется ява скрипт, и делает свое дело. Или как избавиться от "вредных" тегов? Это сообщение отредактировал(а) patap - 3.7.2009, 23:09 -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||||||
|
|||||||||
zetxi815eb |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
linuxoid, юзай регулярки. Вот например регулярка для e-mail:
А вообще вот эта комбинация защитит тебя от хакерских атак типа SQL-injection и XSS:
|
||||
|
|||||
morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
Ага защитит, а за одно защитит твой сайт от посещений пользователями ))) (точнее один раз может случайно из поиска зайдут, но на этом пожалуй и всё) Ребята вопрос на засыпку... Вот я например пишу: "format c:" странно, но сервер на котором работает vingrad.ru почему-то не форматнулся... Посмотрите HTML-код этой странички, фраза "format c:" не отфильтрована и не конвертирована, это так сильно повлияло на безопасность ? Данные надо обрабатывать не в зависимости откуда они пришли, а в зависимости куда они уйдут ! © |
|||
|
||||
zetxi815eb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
не вижу связи посещаемости сайта с защитой от ввода некорректных данных в формы. Приток пользователей с поисковиков зависит от качества внутренней и внешней оптимизацией. А данные фильтруются, чтоб какой-нибудь "продвинутый юзер" не дропнул тебе все таблице в БД с помощью SQL-INJECTION Это сообщение отредактировал(а) zetxi815eb - 4.7.2009, 00:53 |
|||
|
||||
morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
Я привёл пример Я могу написать в эту самую форму (в которую пишу сейчас) опасные данные вроде format c: ' or 1=1 и прочие... даже <?php system('format c:');?> или <script>alert(document.cookie)</script> Ничего из этого не вырезано и не фильтрованно, всё отображается и никаких угроз безопасности нет... Дальше думайте сами... И не увидите, если у вас в в блоге фильтруются комментарии то дельные комментарии никто запостить и не сможет (их просто отфильтрует автомат) |
|||
|
||||
nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Эскейпить данные нужно ПРЯМО перед запросом. Как правило современные интерфейсы делают это за тебя и самому ничего не надо эскейпить. Не нужно юзать устаревние mysql_*
Столько же смысла. Если кто не понял - то я стебусь над нелепым кодом.
Я серьезгно - твой уровень знаний очень низок. Если ты не будешь воппринимать мою фразу в штыки - то я объясню, почему. |
||||||
|
|||||||
icewind |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
morfus, сам сначала бы посмотрел исходный код страницы
до абсурда, конечно, доводить не надо, но есть определенные действия которые нужно делать. Эскейпить символы ПЕРЕД запросом, следить за тем, чтоб тэги, которые ввел пользователь не вывалились в чистом виде на страницу и т.д. -------------------- ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
nerezus, в качестве офтопика - а почему цитаты без привязки к имени пользователя? Вроде бы в Хроме уже действуют "быстрые цитаты", еще есть какой броузер?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Хм, как-то не задумывался о такой фишке =)
|
|||
|
||||
linuxoid |
|
||||||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Стебаешься? Может лучше объяснишь по конкретней? А то дал ссылку на мануал, а толку.. Тоже говорит об уровне... Мне понравился ваниант с htmlspecialchars() и mysql_escape_string(utf8_encode()) вместо addslashes(), но многие тут судя по всему не согласны с этим. Объясните плиз почему?? Из того же мануала:
Я вижу такой вариант применения. Сначала пропускаем текст через trim(), htmlspecialchars(), потом pg_escape_string(utf8_encode()) и вставляем в базу?? Если нет, то обоснуйте свою позицию, как лучше сделать. Спс. Это сообщение отредактировал(а) linuxoid - 5.7.2009, 13:01 |
||||||||||||
|
|||||||||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |