Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: недольшой спор насчет экранирования запросов
$q=mysql_query("SELECT `id` FROM `some` WHERE `name`='$name'");
Ведь если разобраться, htmlspecialchars() УЖЕ обработала одинарные ковычки, а в запросе строка именно в них заключена, а что внутри это уже не важно..)))
может я не прав?
Мелкий
Отправлено: 17 Февраля, 2011 - 17:27:44
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
да, можно использовать так.
----- PostgreSQL DBA
OrmaJever
Отправлено: 17 Февраля, 2011 - 17:32:03
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
мне кажется так ничё не выдет
кавычку не заэкранизирует а поменяет на & # 0 3 9 ; и запрос не будет работать.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
fx500
Отправлено: 17 Февраля, 2011 - 17:36:50
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
OrmaJever пишет:
мне кажется так ничё не выдет
кавычку не заэкранизирует а поменяет на & # 0 3 9 ; и запрос не будет работать.
нет.. Все работает, это уже проверенно, именно это и нужно, чтобы одним разом просечь и теги и не повредить запрос.... спор заключался в том не опасноли это, можно ли закинуть в том скрипте такой запрос который выйдет "за ковычки", и сделает че нить нехорошее)))))
nextdrift
Отправлено: 17 Февраля, 2011 - 18:13:45
Гость
Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:
mysql_real_escape_string(trim(strip_tags_smart($text))); (Добавление)
strip_tags_smart - это пользовательская функция
fx500
Отправлено: 19 Февраля, 2011 - 20:31:50
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
nextdrift пишет:
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:
mysql_real_escape_string(trim(strip_tags_smart($text)));
(Добавление)
strip_tags_smart - это пользовательская функция
мне из-за одного умника, каторый придерживается правил которым его учили приходится весь код переписывать... и еще смеет заявлять в мою сторону что мне поумнеть надо... я принципиально переписывать не собираюсь потомучто на 100% уверен в своей правоте!!!!!!!!! и еще этот умник делает замечание на вот это:
данная комбинация превращает переменную строго в число, и опять опираясь банальным правилам требует сменить это на intval()... скажите нахера давать образование людям? чтобы вот так дрочили кодеров, которые знают свое дело и XSS фильтруют по своему и правильно!!!!!!!!!!
OrmaJever
Отправлено: 19 Февраля, 2011 - 20:40:57
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
fx500 пишет:
данная комбинация превращает переменную строго в число
которые знают свое дело и XSS фильтруют по своему и правильно
По своемуне всегда означает правильно. 2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
fx500
Отправлено: 19 Февраля, 2011 - 20:57:55
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
OrmaJever пишет:
По своемуне всегда означает правильно. 2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.
Приведите мне факты что я не прав, может и поверю!!!!! Сделайте такую строку что после (+0) и htmlspecialchars('...',ENT_QUOTES) вернет такую строку что может повлиять на запросы... я программированием занимаюсь с детства, и не один десяток язаков знаю, и делаю это так как считаю нужным и удобнее... и не собираюсь выслушивать претензии так называемых "обученых" прогеров, которые придерживаются банальностям... извините, но это так!!!
Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
fx500 пишет:
nextdrift пишет:
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:
mysql_real_escape_string(trim(strip_tags_smart($text)));
(Добавление)
strip_tags_smart - это пользовательская функция
мне из-за одного умника, каторый придерживается правил которым его учили приходится весь код переписывать... и еще смеет заявлять в мою сторону что мне поумнеть надо... я принципиально переписывать не собираюсь потомучто на 100% уверен в своей правоте!!!!!!!!! и еще этот умник делает замечание на вот это:
данная комбинация превращает переменную строго в число, и опять опираясь банальным правилам требует сменить это на intval()... скажите нахера давать образование людям? чтобы вот так дрочили кодеров, которые знают свое дело и XSS фильтруют по своему и правильно!!!!!!!!!!
смешно читать. Не в том деле, что ты не прав или я не прав. Ты даже не прочитал что я написал и уже начинаешь высказывать своё превосходство.
Я НЕ ПИСАЛ ЧТО НУЖНО ДЕЛАТЬ ТАК. Я всего лишь написал, как делаю я.
Что я написал? А я написал - что создал ОДНУ функцию (и в этом случае мне нужно только в ОДНОМ месте код править), а в ней следующий вид. И просто вызываю эту функцию для чистки.
Если ты программер с детства то есть два варианта:
0 - ты ребёнок
1 - глупо задавать такие вопросы
И зачем доказывать свою правоту "с пеной изо рта" ? Никто тебя по рукам не бьёт, вот и пользуйся своим набором правил.
ты спросил мнения, тебе их сказали. Ты спорил с кем-то, а теперь споришь с нами
OrmaJever
Отправлено: 20 Февраля, 2011 - 15:11:33
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
fx500 пишет:
Приведите мне факты что я не прав, может и поверю!!!!! Сделайте такую строку что после (+0) и htmlspecialchars('...',ENT_QUOTES) вернет такую строку что может повлиять на запросы
Вы мой пост читали или сразу ответ начали писать?
OrmaJever пишет:
2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.
Да и вобще если вы с детства програмируете что вас на форум привело? (Добавление)
Ну и для человека кторый програмирует с пелёнок покажу как делается fatal error
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
ALEN
Отправлено: 20 Февраля, 2011 - 15:58:01
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
fx500, честно сказать ты не прав. Разработчики изначально придумали решение которое использовать правильней, которое постоянно усовершенствуют и проверяют, чтоб оно не давало неожиданных результатов. А факты твоего неправильного решения уже привел OrmaJever и показал, что бывает, если использовать метод подгона. Если твой код работает и тебя устраивает, как он работает пожалуйста пиши, тебя никто не собирается переучивать, но если ты спрашиваешь совета, то будь добр выслушивать и вникать в сказанное. Я так же знаю не один язык, пишу с детства программы и многие на этом форуме так же и никто кроме тебя не пишет такую фигню на этом форуме.
И еще пару лет назад я писал файловый менеджер для сайта, так вот там требовалось устанавливать права на файлы, а получать их нужно было в виде строки из формы, вот твой подгон там бы не сработал, если не веришь проверь какая охинея выйдет.
Возьми любого старичка на этом форуме, никто из них не бьет себя в грудь, что круче всех.
По теме, самый правильный вариант mysql_real_escape_string - так как прочти матчасть и поймешь, что именно для этого создавалась функция и она будет работать быстрее и безопасней.
Цитата:
mysql_real_escape_string - Функция экранирует специальные символы строки unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query().
Invert
Отправлено: 20 Февраля, 2011 - 17:13:21
Частый гость
Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
fx500, зачем столько восклицательных знаков? Очень глупо себя ведете. Вам действительно стоит поумнеть. (Добавление) Invert, зря исправил, правильно написал.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.