Фильтрация запретных символов - что и как фильтровать?

berkut

Новичок
BigWindow запусти _консоль_ муськи и вбей туда
Код:
SELECT "ouch!! --com'm ; semic; DROP DATABASE mysql"
и посмотри что будет
 

Фанат

oncle terrible
Команда форума
где, мля, в тексте и в документации написано, что mysql_real_escape_string слешит одну сраную одинарную кавычку, и больше ничего?!!!
где, каким местом ты это прочитал?!!
 

BigWindow

Новичок
Автор оригинала: *****
где, мля, в тексте и в документации написано, что mysql_real_escape_string слешит одну сраную одинарную кавычку, и больше ничего?!!!
где, каким местом ты это прочитал?!!
Каким местом? Ээ.. Глазами конечно! :)
А серьезно, то я проводил эксперимент. Вот собственно его и приведу.

Сначала был такой текст:

PHP:
одинарная ковычка - '
двойная ковычка - "  
2 одинарная ковычка - '2'  
2 двойная ковычка - "2"  
два тире - -- 
 подчеркнивание - _  
процент %  
восклицание - !  
двоеточние - :  
точка запятая ;
Далее применил mysql_real_escape_string и вывел на экран промежуточный результат (перед занесением в базу). Вот что там увидал:
PHP:
одинарная ковычка - \'
\r\nдвойная ковычка - "
\r\n2 одинарная ковычка - \'2\'
\r\n2 двойная ковычка - "2"
\r\nдва тире - --
\r\nподчеркнивание - _
\r\nпроцент %
\r\nвосклицание - !
\r\nдвоеточние - :
\r\nточка запятая ;
\r\n
То есть, одинарная кавычка прослэшилась, а двойная нет. Знак = тоже, и -- тоже. ВОт.
 

BigWindow

Новичок
Автор оригинала: berkut
BigWindow запусти _консоль_ муськи и вбей туда
Код:
SELECT "ouch!! --com'm ; semic; DROP DATABASE mysql"
и посмотри что будет
Ммм.. Ничего нет. :)

-~{}~ 10.12.07 12:39:

Автор оригинала: *****
у тебя галлюцинации
В каком смылсе? Что-то не так? Поясните пожалуйста.
 

Фанат

oncle terrible
Команда форума
запусти свой тест еще раз
проверь исходные данные
протрезвей

и получи реальные результаты.

-~{}~ 10.12.07 12:42:

berkut
Ему бесполезно это писать. он не понимает, что такое --. Как и автор книжки. В их сознаии двойной дефис - это Страшный Хакерский Инструмент. Которого Надо Бояться.

А раз не понимает, то и твой пример ему ничего не объяснит
 

BigWindow

Новичок
Автор оригинала: *****
запусти свой тест еще раз
проверь исходные данные
протрезвей

и получи реальные результаты.
Вы о чем конкретно говорите? О моем примере?
 

BigWindow

Новичок
Автор оригинала: *****
о твоем эксперименте
И что в нем? " - заменился на & quot. Вы это имели ввиду? Тогда я ступил :)
А знак = и --? Вот тут я что-то не опнял. Пошлите меня в мануал :)
 

BigWindow

Новичок
*****, вах! Спасибо вам! Спасибо! С этим разобрались!
Так. А что же все-таки сделать с = и --? Только не ругайтесь :) Я правда догнать не могу маленько.
 

Фанат

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

BigWindow

Новичок
Автор оригинала: *****
они опасны. если составлять запросы не так, как написано по ссылке.
при этом опасны не только эти символы, а вообще любой текст.
То есть в запросе
PHP:
mysql_query("INSERT INTO news (N_Title) VALUES ('$N_Title')");
такой опасности нет?
Автор оригинала: *****
почему свет клином сошелся на несчастном равно - известно только господу богу да тому идиоту, который писал книгу, которую ты держишь в руках.
Знаете, я думаю, что наверно не автор книги такой, а я :( Не вник в суть проблемы. Вот. Вам огромнейшее спасибо! Вы развеяли все мои сомнения!
 

Фанат

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

Не надо верить всему, что написано. именно поэтому надо книгу воспринимать не как библию для заучивания наизусть и беспрекословного исполнения, а надо пытаться ПОНЯТЬ, что там написано. Пытаясь понять, ты сможешь сам разбираться - правда там или нет.

но ты что там, что здесь, так ничего и не понял. а ждешь только, чтобы готовая инструкция упала тебе в рот. Это значит, что тебя поломают обязательно.
 

BigWindow

Новичок
*****, на счет "готовая инструкция упала тебе в рот" не согласен! Я же не деньги получаю за работу, которую не могу сделать сам и пишу тут. Нет. Мне просто интересно разбираться. Я не просил писать готовые решения. Я пробовал сам. Конечно, вы мне очень помогли и я ценю это. Но в действительности, я пытлся и буду пытаться разбираться во всем сам. Вы лишний раз подтвердили, что нужно именно понимать, а не заучивать. А еще больше читать и пробовать. Я все понял :) Спасибо большое.
 

Фанат

oncle terrible
Команда форума
и, тем не менее, ты ждешь этого.
насчет "готовая инструкция упала тебе в рот" не согласен!
неправда.
именно готовую инструкцию ты ждешь, кода спрашиваешь - вот, я так написал! теперь не поломают?

при том, что не бывает инструкции по езде, например, на автомобиле.
дали тебе инструкцию, как доехать от дома до магазина - прямо и направо. доехал. стал ехать от магазина по той же инструкции - прямо и направо. и врезался в столб.
вот тебе инструкция.

ездить на автомобиле надо всегда постоянно соображая и оценивая обстановку, учитывая знаки, машины, пешеходы, разметку.

для этого надо понимать - что все эти вещи значат, и как себя ведут. это единственная инструкция.

а ты, вместо того, чтобы написать: "я понял, почему я пишу "INSERT INTO news (N_Title) VALUES ('$N_Title')"); - потому, что так-то и так-то" только и заладил - "опасности нет?"

вместо "я рассуждаю так: бла-бла, рассуждения. где я неправ?" у тебя только "я все понял, спасибо!!!"

так что это твое "не согласен" - фантазии
 

Фанат

oncle terrible
Команда форума
Люди, которые рассуждают, как ты, видят обращение к элементу массива: $arr['key'].
И радостно лупят вывод элемента с переменным ключом - $arr['$key']. А чо? Все ведь сделано по инструкции! почему не работает???
потому что "сделано по инструкции", а не на основании понимания, что такое строки в пхп, что такое переменные, и как к ним обращаться.
 
Сверху