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 :: SQL Инъекция

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: SQL Инъекция
dadasheff
Отправлено: 31 Мая, 2015 - 14:06:22
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Здравствуйте. Написал не большой новостной движок с простым выводом новостей из Бд.
( site.ru/id=1) .

Запрос такой :

$inid = intval($_GET['id']);
$inid = trim($inid);
$inid = htmlspecialchars($inid);
$inid = mysql_real_escape_string($inid);
$inid = stripslashes($inid);

$query = mysql_query("SELECT * FROM articles WHERE `id` = '$inid' ") or die(mysql_error());

Читал что наличие инъекции можно узнать простым добавлением (') к ID.
У меня выдаёт ( You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''278''' at line 1 )

Как защитится от SQl Инъекции ?
Заранее спасибо.
 
 Top
dcc0
Отправлено: 31 Мая, 2015 - 14:17:38
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Про экранирование.
http://habrahabr[dot]ru/post/182424/


-----
Март 2021. Бросил программирование
 
 Top
dadasheff
Отправлено: 31 Мая, 2015 - 14:19:23
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Можете показать на не большом примере ? Так как мне кажется я делаю всё именно так.

(Отредактировано автором: 31 Мая, 2015 - 14:19:55)

 
 Top
Ts.Saltan
Отправлено: 31 Мая, 2015 - 19:30:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




dadasheff пишет:
Как защитится от SQl Инъекции ?

Правильно делать подготовленные запросы. Это умеют делать драйвера mysqli и PDO

PHP:
скопировать код в буфер обмена
  1. //Подключение к базе необходимо переделать на лад PDO
  2. $dsn = 'mysql:dbname='.$dbname.';host='.$host;
  3. $pdo = new PDO($dsn, $user, $pass);
  4.  
  5. $sth = $pdo->prepare('SELECT * FROM articles WHERE `id` = :id');
  6. $sth->bindParam('id', $_GET['id'], PDO::PARAM_INT);
  7. $sth->execute();
  8. $query = $sth->fetchAll();

(Отредактировано автором: 31 Мая, 2015 - 19:32:43)

 
 Top
lastdays
Отправлено: 31 Мая, 2015 - 19:41:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




dadasheff пишет:

PHP:
скопировать код в буфер обмена
  1.  
  2. $inid = intval($_GET['id']);
  3. $inid = trim($inid);
  4. $inid = htmlspecialchars($inid);
  5. $inid = mysql_real_escape_string($inid);
  6. $inid = stripslashes($inid);
  7.  



Что это за бессмыслица?

обычная проверка if ( is_numeric($_GET["id"]) )
не пропустит ничего кроме цифр, htmlspecialchars и прочее после intval никакого эффекта не даст.
Вы хоть читайте для чего эти функции реализованы.
 
 Top
LIME
Отправлено: 31 Мая, 2015 - 22:13:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




lastdays пишет:
Что это за бессмыслица?
нормально
можно еще дустом посыпать
http://forum.php.su/topic.php?fo...77042#1368877042
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB