Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита от SQL-инъекции
 
 автор: moonfox   (02.04.2007 в 22:28)   письмо автору
 
 

опастность внедрения скл иньъекции если если идет запрос select * from 'tab' WHERE ... так как после where идут внешнии параметры - данные. etc
в этом случае можно использовать либо очистку массива get либо mysql_escape_strings для переменных в where

в других случаях типа 'select * from $tab' можно не беспокоится за get переменные
тпкже если используется структура с switch ... case
например:

$t=$_get['t'];
switch ($t)

{
case 0:
select * from 'tab'

break;

}
в даном примере ничего удалчять из get ненадо.

мысль правельна?

   
 
 автор: cheops   (03.04.2007 в 02:15)   письмо автору
 
   для: moonfox   (02.04.2007 в 22:28)
 

>в других случаях типа 'select * from $tab' можно не беспокоится за get переменные
Беспокоится следует всегда, когда переменная передаётся через машину клиента - ничто не мешает добавить WHERE-условие через $tab, если $tab проходит через клиентскую машину.

   
 
 автор: moonfox   (03.04.2007 в 19:15)   письмо автору
 
   для: cheops   (03.04.2007 в 02:15)
 

а если $tab предопределенно?
скажем $_get $var=1
if $var=1
$tab='table'
select * from $tab
???
хтя тут наверно нужно только через define определять переменую с именем таблицы

   
 
 автор: cheops   (04.04.2007 в 01:49)   письмо автору
 
   для: moonfox   (03.04.2007 в 19:15)
 

Нет по такой схеме (если после if используются фигурные скобки) никаких взломом провести невозможно.

   
 
 автор: moonfox   (04.04.2007 в 18:38)   письмо автору
 
   для: cheops   (04.04.2007 в 01:49)
 

а в случае с switch, case?

   
 
 автор: Unkind   (04.04.2007 в 19:31)   письмо автору
 
   для: moonfox   (04.04.2007 в 18:38)
 

а в случае с switch, case?
Смотря какой код.
В том примере, что Вы привели в первом посте, произвести SQL-иньекцию нельзя.

   
 
 автор: moonfox   (05.04.2007 в 00:10)   письмо автору
 
   для: Unkind   (04.04.2007 в 19:31)
 

а если через переменую указывать таблицу .. так для функции проще
$t=$_get['t'];
switch ($t)

{
case 0:
$tab='table';
select * from $tab; // этот запрс в функции стоит я просто при значениях $t указываю из какой таблицы фукнции читать данные

break;

}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования