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

Форум PHP

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

 

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

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

тема: имя таблицы через get
 
 автор: mindless   (15.12.2006 в 19:04)   письмо автору
 
 

насколько целесообразно передавать имя таблицы в БД через get
index.php?id=1&pos=about

   
 
 автор: Unkind   (15.12.2006 в 19:05)   письмо автору
 
   для: mindless   (15.12.2006 в 19:04)
 

Смотря для каких целей.

   
 
 автор: mindless   (15.12.2006 в 19:11)   письмо автору
 
   для: Unkind   (15.12.2006 в 19:05)
 

мне так проще указывать из какой таблицы делать выборку

напрример index.php?id=1&pos=about выбьрать то что имеет id 1 из таблицы about

   
 
 автор: mindless   (15.12.2006 в 23:07)   письмо автору
 
   для: mindless   (15.12.2006 в 19:11)
 

аааааааааа?

   
 
 автор: Alph[p]a   (15.12.2006 в 23:21)   письмо автору
 
   для: mindless   (15.12.2006 в 23:07)
 

Если так хочеться можно делать..блин хотя я неуверен что это безопастно..тогда уж точно придётся жестко фильтровать переменные которые поступают из get.

   
 
 автор: DEM   (15.12.2006 в 23:41)   письмо автору
 
   для: mindless   (15.12.2006 в 19:04)
 

Очень и ОЧЕНЬ не безопасно... передавайте лучше по СЕССИЯМ, ну или сделайте хорошую проверку, как ыбло написано постом выше :)

   
 
 автор: cheops   (16.12.2006 в 02:14)   письмо автору
 
   для: mindless   (15.12.2006 в 19:04)
 

Передавать можно, только нужно обязательно проверять, чтобы не всунули вместо GET-параметра, SQL-инъекцию.

   
 
 автор: mindless   (16.12.2006 в 02:58)   письмо автору
 
   для: cheops   (16.12.2006 в 02:14)
 

а опасность таиться при передачи переменных типа string или цифр тоже?

   
 
 автор: Саня   (16.12.2006 в 03:19)   письмо автору
 
   для: mindless   (16.12.2006 в 02:58)
 

Ага. И цифр тоже.

   
 
 автор: Somebody   (16.12.2006 в 03:23)   письмо автору
 
   для: mindless   (16.12.2006 в 02:58)
 

Если таблиц не так много, то можно им присвоить id, а уж дальше в самом скрипте на основании полученного id использовать ту, или иную таблицу.

   
 
 автор: mindless   (16.12.2006 в 03:27)   письмо автору
 
   для: Somebody   (16.12.2006 в 03:23)
 

я так и сделал..

но все мне теперь интересно больше узнать о возможных проблемах

   
 
 автор: kasmanaft   (16.12.2006 в 09:05)   письмо автору
 
   для: mindless   (16.12.2006 в 03:27)
 

нужно очистить переданную строку от всего, кроме цифр, и проблем не будет

   
 
 автор: cheops   (16.12.2006 в 13:26)   письмо автору
 
   для: mindless   (16.12.2006 в 03:27)
 

Опасность заключается в том, что вместо имени таблицы можно передать фрагмент SQL-кода, который из будет вставлен в ваш SQL-запрос и посредством конструкции UNION превратит его в два запроса, один из которых будет осуществлять нужные злоумышленику действия, например, выводить пароли (если они имеются в одной из таблиц).

   
 
 автор: mindless   (16.12.2006 в 19:05)   письмо автору
 
   для: cheops   (16.12.2006 в 13:26)
 

на сервере где я хостю сайт сто мускл 4.1.21 - у меня в запросе select по id нет проверок на стмволы ... но сколька не пытался пихать всякую лебуду в адресной строке после id - все все твремя получал ошибку .... "не правельный параметр строки в mysql_fetch_arrow"- хтя как я понял - ошибка не всегда прихнать несостоятельность инъекции.. тогда скажете - вот допустим нащ запрос реально осуществился - мы подствили свой запрос и что то выбрали- как эти данные теперь отобразить?

   
 
 автор: cheops   (17.12.2006 в 00:21)   письмо автору
 
   для: mindless   (16.12.2006 в 19:05)
 

Не всякая лабуда подходит на роль инъекции :))), чтобы составить инъекцию зачастую нужно знать структуру таблицы... в приципе этот вопрос подробно рассматривается в книге "Головоломки на PHP для хакеров", а также разбирается в ответах к задаче http://www.softtime.ru/info/task.php?id_article=81. Существую методы исследования, позволяющие восстановить структуру таблицы по SQL-инъекции, в общем если долго возиться можно осуществить взлом, но чтобы продемонстрировать его, обычным разработчикам нужны исходные коды и структура таблицы, так как у них зачастую нет времени ломать код (который возможно ещё и не сломаешь в результате). Посмотрите задачу - там демонстрируется одна из SQL-инъекций - если будет что-то не понятно - справшивайте - будем разбираться дальше.

   
Rambler's Top100
вверх

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