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

BigWindow

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

Всем привет!

В одной из книг по PHP встретил рекомендации по поводу фильтрации входных данных для MySQL. Собственно возникло несколько вопросов. С вашего позволения приведу их ниже.

1. В книге указано, что необходимо заменять одинарные и двойные кавычки. Мне с одинарными все понятно - в скрипте я обрабатываю параметр в соответствии с рекомендациями сатьи - PHP FAQ. А вот как быть с двойными? Они настолько опасны, что их нужно фильтровать? Может просто заменить " на " ?

2. Точка с запятой. Как быть с ней? Тоже фильтровать?
3. Два тире подряд?
4. Знак равенства? Он часто употребляется в тексте. Его необходимо как-то защищать или что?

Подскажите, как быть с перечисленным выше? Какойт материал прочесть?

Спасибо.
 

Фанат

oncle terrible
Команда форума
ужос.

-~{}~ 10.12.07 11:14:

Прочесть надо материал, на который ты дал ссылку.
вот только именно прочесть. А не галопом проскакать первые два абзаца
 

BigWindow

Новичок
Автор оригинала: *****
ужос.
Есть немного :)

Автор оригинала: *****
Прочесть надо материал, на который ты дал ссылку.
вот только именно прочесть. А не галопом проскакать первые два абзаца
Хмм.. Вообще то я привел только одну статью. Там ответов на мои вопросы нет, ибо не стал бы я писАть здесь в противном случае.

-~{}~ 10.12.07 11:30:

Автор оригинала: WP
[m]mysql_real_escape_string[/m]
С кавычками усе ясно. А вот как быть с =, точка с запятой и тп?
 

BigWindow

Новичок
Автор оригинала: *****
есть.
Кажись понял!

Вот например мне нужно в базу внести следующий текст:

PHP:
Знак "=" - это знак равенства; Знак '=' не отностится к знаку --
Вот. Далее, я функцией mysql_real_escape_string добавляю слэши к одинарным кавычкам. Затем символ " заменяю на & quot;
Затем запрос:

PHP:
mysql_query("INSERT INTO news (N_Text)  VALUES ('$N_Title')"
Вот как-то так. Я правильно мыслю?
 

BigWindow

Новичок
Автор оригинала: *****
вот это.

ты хоть какую-то логику в этом видишь?
Естественно я вижу в этом логику :) Но судя по вашему вопросу, я мыслю не правильно :)
А в принципе правильный прием вверху описан? Не будет проблем с безопасностью?
 

Фанат

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

-~{}~ 10.12.07 11:55:

Естественно я вижу в этом логику
офигенная логика.
ты действительно считаешь, что база данных так устроена, что не может хранить некоторые символы?
и что предназначена она исключительно для хранения HTML? А чистый текст или программный код в ней хранить уже нельзя?
 

BigWindow

Новичок
*****, ну конечно я понимаю все. Просто переживаю, чтобы не ломанули мой сайт через :) Ну в принципе мне понятно сто делать нужно. Так что спасибо!
 

Фанат

oncle terrible
Команда форума
Сайт твой и так ломанут - не переживай.

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

BigWindow

Новичок
*****, напротив! Я очень хочу разбирать! Я собственно поэтому и задаю вопросы здесь :)

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

А на данный момент мне понятно как безопасно разрешить пользователям добавлять свои коментарии :) Вот.
 

Фанат

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

BigWindow

Новичок
Автор оригинала: *****
ну тагда объясни - что тебе понятно.
напиши, как правильно делать, чтобы было безопасно, и в чем ты заблуждался.
Ок. Изначально я сомневался в том, стоит или нет следовать указаниям, приведенным в книге. Как я уже говорил, там пишут, что нужно фильтровать знак =. Но как же без него в тексте? ;) Вот я и решил узнать больше по этому вопросу на форуме.

Теперь мне стало ясно, что экранируя кавчки и грамотно составляя запрос можно избежать неприятностей с безопасностью.

Хотя я так и не понял, можно ли разрешать двойное тире (--)?
 

BigWindow

Новичок
Автор оригинала: *****
А двойная кавычка чем тебе помешала?
Тем, что можно подставить в запрос и провести SQL Injection. Только на сколько это реально я не знаю :)

Так как быть с двойным тире ?
 
Сверху