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-инъекции [2]

 PHP.SU

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


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

> Без описания
kappa
Отправлено: 26 Марта, 2012 - 11:46:00
Post Id



Посетитель


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


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




Я тоже добавлю Радость :
PDO http://docs.php.net/manual/ru/book.pdo.php
 
 Top
ПТО
Отправлено: 26 Марта, 2012 - 11:47:37
Post Id



Посетитель


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


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




А если из массива, определяемого заранее? говнокод?
 
 Top
etoYA
Отправлено: 26 Марта, 2012 - 11:49:52
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




DelphinPRO пишет:
etoYA, затем, что количество слов берется из файла


Ах, да Хм
ПТО, прислушайся....
 
 Top
DelphinPRO
Отправлено: 26 Марта, 2012 - 11:49:58
Post Id



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


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


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




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

если пишите с нуля - сразу обратите внимание на PDO


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ПТО
Отправлено: 26 Марта, 2012 - 11:57:29
Post Id



Посетитель


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


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




DelphinPRO пишет:
используйте pg_escape_string - данная функция экранирует все опасные символы

Какие символы могут быть для меня опасными, интересно? запятая чтоли? Вот слова delete, drop, cascade - да, опасны.
И вопрос2 - почему не советуют сразу подставлять перменные в выражение а-ля
PHP:
скопировать код в буфер обмена
  1. $sth->db->query("INSERT INTO  mytable (a, b) VALUES ($a, $b);");

а рекомендуют ползоваться prepare ?
 
 Top
etoYA
Отправлено: 26 Марта, 2012 - 12:02:36
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




ПТО, ковычка офк...
 
 Top
snikers987
Отправлено: 26 Марта, 2012 - 12:08:01
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




ПТО Тоесть если юзер напишет delete послать его куда подальше? Странное у Вас желание)) Вам написали что делать. Не подходит?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
DelphinPRO
Отправлено: 26 Марта, 2012 - 12:08:43
Post Id



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


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


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




ПТО пишет:
почему не советуют сразу подставлять перменные в выражение а-ля

потому что механизм PDO обрабатывает подготовленные выражения, исключая возможность инъекций. И их не нужно обрабатывать функциями экранирования.
Если поставлять переменные непосредственно в запрос - вы сводите на нет это преимущество.
(Добавление)
ПТО пишет:
Вот слова delete, drop, cascade - да, опасны.

эти слова не опасны, к тому же они могут находится внутри полезного текста.
а вот кавычка - да
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM WHERE id = '$id'

передаем слово delete - получаем
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM WHERE id = 'delete'

опасности такой запрос не представляет
передаем выражение «1';DELETE FROM users; /*» - получаем
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM WHERE id = '1';DELETE FROM users; /*'

это уже косяк
при экранировании получим
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FROM WHERE id = '1\';DELETE FROM users; /*'

обычная строка, ничего опасного


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ПТО
Отправлено: 26 Марта, 2012 - 12:44:58
Post Id



Посетитель


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


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




Цитата:
эти слова не опасны, к тому же они могут находится внутри полезного текста.

У меня полезный текст не может включать такие выражения )) Я же не форум делаю.
Ну ладно , потестирую
PHP:
скопировать код в буфер обмена
  1.   if (strpos(strtolower($_POST['field']), 'delete') !== false ) {
  2.       echo 'Ахтунг!!';
  3.     }

и
PHP:
скопировать код в буфер обмена
  1.     if (stripos($_POST['field'], 'delete') !== false ) {
  2.       echo 'Ахтунг!!';
  3.     }
 
 Top
tato
Отправлено: 27 Марта, 2012 - 05:46:07
Post Id



Посетитель


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


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




-> PDO <- и не надо тестить говнокод, тем более Вам человек сам сказал, что это говнокод.
Если так сильно хочется занятся велосипедостроем - напишите лучше обертку для PDO (=


-----
просто ?: сложно
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB