Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование addslashes(stripslashes()), Почему не делать перед вводом в базу? 
V
    Опции темы
SiteLev
Дата 1.7.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.6.2008

Репутация: нет
Всего: 1



Этот вопрос мучает меня давно, поэтому очнь хотел бы получть ответ от людей с опытом
Когда речь идет о добавлении слешей перед добавлением данных в базу,
то встречал в основном такие подходы:

1) Проверить, включено ли magic_quotes и поступать соответственно
2) Ничего не делать, потому, что знаем, что оно включено 
3) Использовать функцию, которая проверяет автоматически , нужно ли вставить слеши и ставит(если не ошибаюсь)

вот вопрос, а почему просто не 
снять слэши, если они есть и добавить снова 
Код

addslashes(stripslashes($data)) 


Что-то меашет этому? 

Спасибо

PM MAIL   Вверх
Feldmarschall
Дата 1.7.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Все три подхода неправильные.

Вот тебе правильные три подхода:
1. добавлять надо всегда. 
2. magic_quotes отключить. SQL запрос и входящие в скрипт данные - это совершенно разные, не связанные между собой вещи.
3. если мы работаем с mysql, то добавлять надо функцией mysql_real_escape_string

Добавлено @ 21:51
Цитата(SiteLev @  1.7.2008,  21:36 Найти цитируемый пост)
а почему просто не 
снять слэши, если они есть и добавить снова 
addslashes(stripslashes($data)) 

потому что если в тексте встречаются последовательности символов, идентичные результату работы addslashes, эти последовательности будут испорчены. 
то есть, если я сейчас здесь напишу
Цитата

слеш прибавляется к некоторым спецсимволам, например, кавычкам. выглядит это так: \"

то при твоем подходе оно превратится в
Цитата

слеш прибавляется к некоторым спецсимволам, например, кавычкам. выглядит это так: "

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

Это сообщение отредактировал(а) Feldmarschall - 1.7.2008, 21:58
PM   Вверх
Mal Hack
Дата 1.7.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



SiteLev, 
http://ru2.php.net/mysql_real_escape_string
Вот что экранирует mysql_real_escape_string:
Цитата
mysql_real_escape_string() вызывает библиотечную функцмю MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " and \x1a.

addslaches же:
Цитата
Возвращает сроку str , в которой перед каждым спецсимволом добавлен обратный слэш (\), например для последующего использования этой строки в запросе к базе данных. Экранируются одиночная кавычка ('), дойная кавычка ("), обратный слэш (\) и NUL (байт NULL).

т.е. таким образом мы не обеспечиваем того экранирования, которое нужно сделать для быза. Для других СУ(Р)БД история такая же.
Еще один аргумент привел Feldmarschall.

Что касается magic_quotes...
http://ru2.php.net/manual/ru/info.configur...agic-quotes-gpc
Цитата
This feature has been DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.


С точки зрения технологии программирования ВЫ как разработчик должны полностью контролировать входные данные, соответственно работать надо с "чистыми" данными, без какой-либо обработки, т.к. вероятность того, что в промежуточном этапе вы что-то потеряете - велика. И проблема даже не в этом, а в том, что "ловить" вы это будете очень долго в процессе отладки.
PM ICQ   Вверх
SiteLev
Дата 1.7.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.6.2008

Репутация: нет
Всего: 1



Ок, благодарю за ответы smile
PM MAIL   Вверх
SiteLev
Дата 1.7.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.6.2008

Репутация: нет
Всего: 1



Если можно, обобщу :

1) Нужно освободиться от автоматически добавленных слэшей 

Код

if(get_magic_quotes_gpc())
$data = stripslashes($data)


2) Экранипровать с помощью функции mysql_real_escape_string 
  
Код

$data = mysql_real_escape_string($data)




Это сообщение отредактировал(а) SiteLev - 1.7.2008, 22:58
PM MAIL   Вверх
Mal Hack
Дата 1.7.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(SiteLev @  1.7.2008,  22:55 Найти цитируемый пост)
1) Нужно освободиться от автоматически добавленных слэшей 

Нет. Надо на уровне .htaccess отрубать magic_quotes в трех эпостазиях...
PM ICQ   Вверх
SiteLev
Дата 1.7.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.6.2008

Репутация: нет
Всего: 1




Как понял, 100% - ного  решения нет, если не трогать настройки сервера?

Это я к тому, что мы не знаем, какие настройки будут на сервере, где наш скрипт будет использован 
PM MAIL   Вверх
Mal Hack
Дата 1.7.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



.htaccess для того и придуман, чтобы на настройки сервера нам было плевать по сути дела. Никто не мешает вам подконфигурировать php как вам нужно, сделав это через .htaccess, естественно в пределах прав доступа...
PM ICQ   Вверх
SiteLev
Дата 2.7.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.6.2008

Репутация: нет
Всего: 1



Спасибо, буду иметь в виду smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.