preg_match() или mysql_real_escape_string()

dimonbes

Новичок
preg_match() или mysql_real_escape_string()

Всем добрый вечер!

Озаботился безопасностью, прочитал статью "Приемы безопасного программирования веб-приложений на PHP", час смотрел форум, и создалось впечатление, что использовать такие конструкции, как preg_match() это слишком параноидально, а достаточно - mysql_real_escape_string(). Написал функцию с preg_match_all(), единственный плюс которой, получается, что выводит все недопустимые с моей (а не юзера) точки зрения символы. Нужно ли все это? И вообще, что оптимально с точки зрения, чтобы в БД дряни не нахватать, и юзера слишком не ограничивать? Какой механизм у данного форума, например?
З.Ы. По поводу иньекций - при вводе в незащищенную форму, например 'ghjhgkjhgkj', insert'а вообще не случилось.
 
Ты уж определись с задачей - мухи (проверка пользовательских данных) - отдельно, котлеты (SQL-injection) - отдельно.
 
А mysql_real_escape_string() очень даже хорошо вставляет в БД <img src="http://zloyhaker.ru/xxx.gif">. Получается, preg_match() необходим?
 
dimonbes
не плохо бы заглянуть в ман. там написанно, что mysql_real_escape_string() эскейпит только ' (одинарную кавычку) в запросах, так как она является служебным символом.
 
> А mysql_real_escape_string() очень даже хорошо вставляет в БД <img src="http://zloyhaker.ru/xxx.gif">.
Вставляет, а что в этом страшного?

> Получается, preg_match() необходим?
Зачем? Всё зависит от ответа на этот вопрос.

> mysql_real_escape_string() эскейпит только '
Ты сам-то давно ли в мануал-то заглядывал? Ну так сходи, развейся.
 
SiMM
не по делу, я прекрасно знаю, что экранирует mysql_escape_string. я не могу ему в одном предложении пересказать все.

ладно, понял что ступил, ему вообще-то надо проверять данные.
 
master_x, следи за словами. То, что ты сказал выше - может легко сбить с толку человека. Не хочешь пересказывать - кидай ссылку на ман - там всё написано :)
 
А mysql_real_escape_string() очень даже хорошо вставляет в БД <img src="http://zloyhaker.ru/xxx.gif">. Получается, preg_match() необходим?
я не понял, а ты думал, что оно будет препятствовать?
 
> А mysql_real_escape_string() очень даже хорошо вставляет в БД <img src="http://zloyhaker.ru/xxx.gif">.
Вставляет, а что в этом страшного?
Страшного много, особ., если это будет xxx.php

А mysql_real_escape_string() очень даже хорошо вставляет в БД <img src="http://zloyhaker.ru/xxx.gif">. Получается, preg_match() необходим?




я не понял, а ты думал, что оно будет препятствовать?
Да, что-то поначалу не разобрался (функций много, а я один :) )
 
Да, буду функцию писать, разрешающюю пользователю отправлять только три буквы, вроде иначе себе дороже выйдет?
 
не понял.
как именно дороже?
как тебя защитат три буквы.
и, главное - что ты будешь делать, когда букв понадобится больше. к примеру, в гостевой книге?
 
Да я пошутил, думаю, вначале все потенциально опасные символы заменить str_replace() - ом допустим на '' , $ на USD и так далее, а потом добить все это регулярными выражениями (preg_match() ) плюс все эти addslashes и mysql_real_escape_string. Это потянет?
 
чем потенциально опасен символ $?
какие ещё бывают опасные символы?
потом добить все это регулярными выражениями
какими? для чего?
ты можешь внятно сказать - ОТ ЧЕГО ты собираешься защищаться?
или ты сам не знаешь?

-~{}~ 19.12.05 18:52:

вернёмся к заголовку этой темы.
preg_match() или mysql_real_escape_string( )
ты хотя бы понял, что это разные функции? И что защищают они от разных вещей?
по-моему, ты так и не понял.

ты можешь сказать, чем тебе грожит этот ужасный код - <img src="http://zloyhaker.ru/xxx.gif"> и почему от него надо защищаться через mysql_real_escape_string?
 
Сверху