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
Форумы портала PHP.SU :: Версия для печати :: недольшой спор насчет экранирования запросов
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » недольшой спор насчет экранирования запросов

Страниц (1): [1]
 

1. fx500 - 17 Февраля, 2011 - 17:26:26 - перейти к сообщению
Здрасти.. Опасно ли использовать такой метод?
(я знаю, что он не стандартный)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $name=htmlspecialchars($_POST['name'],ENT_QUOTES);
  4. $q=mysql_query("SELECT `id` FROM `some` WHERE `name`='$name'");
  5.  


Ведь если разобраться, htmlspecialchars() УЖЕ обработала одинарные ковычки, а в запросе строка именно в них заключена, а что внутри это уже не важно..)))
может я не прав? Растерялся
2. Мелкий - 17 Февраля, 2011 - 17:27:44 - перейти к сообщению
да, можно использовать так.
3. OrmaJever - 17 Февраля, 2011 - 17:32:03 - перейти к сообщению
мне кажется так ничё не выдет Растерялся
кавычку не заэкранизирует а поменяет на & # 0 3 9 ; и запрос не будет работать.
4. fx500 - 17 Февраля, 2011 - 17:36:50 - перейти к сообщению
OrmaJever пишет:
мне кажется так ничё не выдет
кавычку не заэкранизирует а поменяет на & # 0 3 9 ; и запрос не будет работать.


нет.. Все работает, это уже проверенно, именно это и нужно, чтобы одним разом просечь и теги и не повредить запрос.... спор заключался в том не опасноли это, можно ли закинуть в том скрипте такой запрос который выйдет "за ковычки", и сделает че нить нехорошее)))))
5. nextdrift - 17 Февраля, 2011 - 18:13:45 - перейти к сообщению
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:

mysql_real_escape_string(trim(strip_tags_smart($text)));
(Добавление)
strip_tags_smart - это пользовательская функция
6. fx500 - 19 Февраля, 2011 - 20:31:50 - перейти к сообщению
nextdrift пишет:
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:

mysql_real_escape_string(trim(strip_tags_smart($text)));
(Добавление)
strip_tags_smart - это пользовательская функция


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

данная комбинация превращает переменную строго в число, и опять опираясь банальным правилам требует сменить это на intval()... скажите нахера давать образование людям? чтобы вот так дрочили кодеров, которые знают свое дело и XSS фильтруют по своему и правильно!!!!!!!!!!
7. OrmaJever - 19 Февраля, 2011 - 20:40:57 - перейти к сообщению
fx500 пишет:
данная комбинация превращает переменную строго в число

это и правдо немногостраный способ А?!

fx500 пишет:
которые знают свое дело и XSS фильтруют по своему и правильно

По своемуне всегда означает правильно. 2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.
8. fx500 - 19 Февраля, 2011 - 20:57:55 - перейти к сообщению
OrmaJever пишет:
По своемуне всегда означает правильно. 2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.


Приведите мне факты что я не прав, может и поверю!!!!! Сделайте такую строку что после (+0) и htmlspecialchars('...',ENT_QUOTES) вернет такую строку что может повлиять на запросы... я программированием занимаюсь с детства, и не один десяток язаков знаю, и делаю это так как считаю нужным и удобнее... и не собираюсь выслушивать претензии так называемых "обученых" прогеров, которые придерживаются банальностям... извините, но это так!!!
9. nextdrift - 20 Февраля, 2011 - 14:25:36 - перейти к сообщению
fx500 пишет:
nextdrift пишет:
Я лично с опаской отношусь к входящим данным. Создал функцию, для чистки входящего текста, а в ней следующий вид:

mysql_real_escape_string(trim(strip_tags_smart($text)));
(Добавление)
strip_tags_smart - это пользовательская функция


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

данная комбинация превращает переменную строго в число, и опять опираясь банальным правилам требует сменить это на intval()... скажите нахера давать образование людям? чтобы вот так дрочили кодеров, которые знают свое дело и XSS фильтруют по своему и правильно!!!!!!!!!!



Радость смешно читать. Не в том деле, что ты не прав или я не прав. Ты даже не прочитал что я написал и уже начинаешь высказывать своё превосходство.

Я НЕ ПИСАЛ ЧТО НУЖНО ДЕЛАТЬ ТАК. Я всего лишь написал, как делаю я.

Что я написал? А я написал - что создал ОДНУ функцию (и в этом случае мне нужно только в ОДНОМ месте код править), а в ней следующий вид. И просто вызываю эту функцию для чистки.



Если ты программер с детства то есть два варианта:
0 - ты ребёнок
1 - глупо задавать такие вопросы

И зачем доказывать свою правоту "с пеной изо рта" ? Никто тебя по рукам не бьёт, вот и пользуйся своим набором правил.

ты спросил мнения, тебе их сказали. Ты спорил с кем-то, а теперь споришь с нами
10. OrmaJever - 20 Февраля, 2011 - 15:11:33 - перейти к сообщению
fx500 пишет:
Приведите мне факты что я не прав, может и поверю!!!!! Сделайте такую строку что после (+0) и htmlspecialchars('...',ENT_QUOTES) вернет такую строку что может повлиять на запросы

Вы мой пост читали или сразу ответ начали писать?
OrmaJever пишет:
2 разных способа могут выдавать один результат, но один будет грузится 10мс и забирать минимум памяти, а другой 100мс и значительно забивать память.

Да и вобще если вы с детства програмируете что вас на форум привело? Однако
(Добавление)
Ну и для человека кторый програмирует с пелёнок покажу как делается fatal error

и в адресной строке вводим file.php?id[]=1
И видим ошибку + раскрытие путей!
А вот так мы невидим ничего!
PHP:
скопировать код в буфер обмена
  1. $id = (int)$_GET['id'];
11. ALEN - 20 Февраля, 2011 - 15:58:01 - перейти к сообщению
fx500, честно сказать ты не прав. Разработчики изначально придумали решение которое использовать правильней, которое постоянно усовершенствуют и проверяют, чтоб оно не давало неожиданных результатов. А факты твоего неправильного решения уже привел OrmaJever и показал, что бывает, если использовать метод подгона. Если твой код работает и тебя устраивает, как он работает пожалуйста пиши, тебя никто не собирается переучивать, но если ты спрашиваешь совета, то будь добр выслушивать и вникать в сказанное. Я так же знаю не один язык, пишу с детства программы и многие на этом форуме так же и никто кроме тебя не пишет такую фигню на этом форуме.

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

Возьми любого старичка на этом форуме, никто из них не бьет себя в грудь, что круче всех.

По теме, самый правильный вариант mysql_real_escape_string - так как прочти матчасть и поймешь, что именно для этого создавалась функция и она будет работать быстрее и безопасней.

Цитата:
mysql_real_escape_string - Функция экранирует специальные символы строки unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query().
12. Invert - 20 Февраля, 2011 - 17:13:21 - перейти к сообщению
Исправил. Не желаю вступать в спор.
13. Champion - 20 Февраля, 2011 - 17:36:53 - перейти к сообщению
fx500, зачем столько восклицательных знаков? Очень глупо себя ведете. Вам действительно стоит поумнеть.
(Добавление)
Invert, зря исправил, правильно написал.

 

Powered by ExBB FM 1.0 RC1