ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

intval или quotes
  #1  
Старый 04.03.2010, 01:43
Аватар для Seravin
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию intval или quotes

Тут вот в чём у меня проблема: читал статью про анти sql-inj, написал там, но никто ничего не написал. Я пытаюсь понять минусы использования такого метода выборки из базы данных.

PHP код:
$myid=intval($_GET['id']);
$q="SELECT * FROM mytable WHERE id=".myid;
... 
и передачи параметра id строкой(даже если поле id числовое):

PHP код:
$myid=mysql_real_escape_string($_GET['id']);
$q="SELECT * FROM mytable WHERE id=' ".myid." ' ";//без пробелов
... 
Идёт всё равно конвертация в числовой тип, обрезая строку начиная с символа с которого не удалось преобразование.
Какой смысл разделять строковые и числовые параметры, если можно строкой.
(скрипт довольно простой, без проверки на magic_quotes, но не в этом смысл)

Последний раз редактировалось Seravin; 04.03.2010 в 23:07.. Причина: ошибся чуть)
 
Ответить с цитированием

  #2  
Старый 04.03.2010, 02:20
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

А если значение отрицательное?
 
Ответить с цитированием

  #3  
Старый 04.03.2010, 02:34
Аватар для Seravin
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

а разница? всё равно число, только отрицательное(только что тестил)
 
Ответить с цитированием

  #4  
Старый 04.03.2010, 04:28
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Для чисел достаточно приведения к численному.
 
Ответить с цитированием

  #5  
Старый 04.03.2010, 05:04
Аватар для Seravin
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

ну я понимаю, но если у меня в скрипте, например, используется как текстовые, так и числовые колонки, так какой смысл мне использовать intval(), если я могу просто отправлять всё строкой, что, по моему, безопастней(хотя может я не очень хорошо знаю нюансы intval'а)
 
Ответить с цитированием

  #6  
Старый 04.03.2010, 22:52
Аватар для ChieFSS
ChieFSS
Познающий
Регистрация: 23.11.2006
Сообщений: 34
Провел на форуме:
156100

Репутация: 7
По умолчанию

to Seravin,
intval() получает целочисленное значение переменной.
То есть в запросе нужно 100% иметь число, а не строку что-нибудь ещё.
А какое там поле (если вы про html) это не важно. Пользователь всегда может подсунуть левые данные.

addslashes() экранирует спецсимволы в строке.
Это из другой серии функция. К числам никакого отношения не имеет и не спасет от подсовывания в запрос строки, там где должна быть цифра.
 
Ответить с цитированием

  #7  
Старый 04.03.2010, 22:58
Аватар для warlok
warlok
Постоянный
Регистрация: 18.02.2008
Сообщений: 368
Провел на форуме:
4075418

Репутация: 386
По умолчанию

Seravin тогда уж mysql_real_escape_string() потому что addslashes() обходиться при мультибайтовых кодировках в бд, кроме UTF-8
 
Ответить с цитированием

  #8  
Старый 04.03.2010, 23:05
Аватар для Seravin
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

Цитата:
Сообщение от ChieFSS  
to Seravin,
intval() получает целочисленное значение переменной.
То есть в запросе нужно 100% иметь число, а не строку что-нибудь ещё.
А какое там поле (если вы про html) это не важно. Пользователь всегда может подсунуть левые данные.

addslashes() экранирует спецсимволы в строке.
Это из другой серии функция. К числам никакого отношения не имеет и не спасет от подсовывания в запрос строки, там где должна быть цифра.
Ты мне мануал по функциям написал??? я это знаю, но если ты читал бы внимательно, то не писал бы этого
 
Ответить с цитированием

  #9  
Старый 04.03.2010, 23:07
Аватар для Seravin
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

Цитата:
Сообщение от warlok  
Seravin тогда уж mysql_real_escape_string() потому что addslashes() обходиться при мультибайтовых кодировках в бд, кроме UTF-8
Ну да, е это и хотел сказать) просто ошибся чуть)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Взлом ICQ через primary: FAQ+ПО" или "Реально ли это?" bymugen ICQ 32 05.02.2010 00:14
Взлом E-Mail и анкет Vkontakte.ru на заказ Frost26 О Работе 25 19.11.2009 22:00
прикол пришел на асю mesejj Болталка 11 01.05.2009 21:27
Хакеры и кракеры или "Что такое хорошо и что такое плохо?" foreva Чужие Статьи 12 09.02.2008 12:26
Books JS FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ