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'а вообще не случилось.
 

SiMM

Новичок
Ты уж определись с задачей - мухи (проверка пользовательских данных) - отдельно, котлеты (SQL-injection) - отдельно.
 

dimonbes

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

master_x

Pitavale XXI wieku
dimonbes
не плохо бы заглянуть в ман. там написанно, что mysql_real_escape_string() эскейпит только ' (одинарную кавычку) в запросах, так как она является служебным символом.
 

SiMM

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

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

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

master_x

Pitavale XXI wieku
SiMM
не по делу, я прекрасно знаю, что экранирует mysql_escape_string. я не могу ему в одном предложении пересказать все.

ладно, понял что ступил, ему вообще-то надо проверять данные.
 

SiMM

Новичок
master_x, следи за словами. То, что ты сказал выше - может легко сбить с толку человека. Не хочешь пересказывать - кидай ссылку на ман - там всё написано :)
 

Фанат

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

dimonbes

Новичок
> А 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() необходим?




я не понял, а ты думал, что оно будет препятствовать?
Да, что-то поначалу не разобрался (функций много, а я один :) )
 

dimonbes

Новичок
Да, буду функцию писать, разрешающюю пользователю отправлять только три буквы, вроде иначе себе дороже выйдет?
 

Фанат

oncle terrible
Команда форума
не понял.
как именно дороже?
как тебя защитат три буквы.
и, главное - что ты будешь делать, когда букв понадобится больше. к примеру, в гостевой книге?
 

dimonbes

Новичок
Да я пошутил, думаю, вначале все потенциально опасные символы заменить str_replace() - ом допустим на '' , $ на USD и так далее, а потом добить все это регулярными выражениями (preg_match() ) плюс все эти addslashes и mysql_real_escape_string. Это потянет?
 

Фанат

oncle terrible
Команда форума
чем потенциально опасен символ $?
какие ещё бывают опасные символы?
потом добить все это регулярными выражениями
какими? для чего?
ты можешь внятно сказать - ОТ ЧЕГО ты собираешься защищаться?
или ты сам не знаешь?

-~{}~ 19.12.05 18:52:

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

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