Защита от пользователя в MySQL @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 16 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Заголовок сообщения: Защита от пользователя в MySQL
Сообщение Добавлено: 1 Сентябрь 2003, 09:54:40 
Есть ли каки-нибудь приемы необходимые для проверки (защиты) данных принимаемых от пользователя при работе с MySQL.
Помимо разумеется подстановки \' еще что-то есть?

к примеру можно ли так делать, если нет, то чем это черевато?

Код:
$table=param('table');



$result = $DB->prepare("SELECT * FROM $table);

_________________
:: metal kick ass ::
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 1 Сентябрь 2003, 14:56:43 
это черевато все тем-же - пользователь может управлять по своему усмотрению выводом. а если класс работы с БД позволяет выполнять пакетные обработки - то прислать тебе могут все что угодно.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 1 Сентябрь 2003, 15:08:53 
как защититься от этого?

_________________
:: metal kick ass ::
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 1 Сентябрь 2003, 15:36:46 
что есть управление выводом?
а при внесении данных, может он чего повредить и как уберечься?

_________________
:: metal kick ass ::
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 2 Сентябрь 2003, 09:55:58 
передавать не имя таблицы, а ее идентификатор (например - число). далее в скрипте разбирать id->table_name

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 2 Сентябрь 2003, 11:39:06 
а к примеру при вставлении данных, что делать?

_________________
:: metal kick ass ::
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 2 Сентябрь 2003, 14:28:44 
MpaK999, вопрос не понятен. смотря каких данных. общий совет - всегда проверяй то что приходит от пользователя на валидность.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 3 Сентябрь 2003, 07:21:46 
к примеру есть
Код:
$text=param('text');
$result = $DB->do("INSERT INTO guestbook (text) VALUES ('$text')");


может ли пользователь, как либо повредить базу или еще чего, вставив к примеру в text - свой SQL запрос?

_________________
:: metal kick ass ::
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 3 Сентябрь 2003, 15:54:46 
Наверное в вышеприведенном примере ничего хорошего не будет, если в $text будут мета-символы, типа апострофа. Но вот повредить ими - навряд ли что-то возможно. Если я ничего не путаю, то MySQL и вложенные запросы-то не поддерживает, поэтому в худшем случае вывалится сообщение об ошибке (или даже не вывалится).
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 3 Сентябрь 2003, 16:50:26 
gregzem, апострофы лечу ->quote(
ну, если так, то хорошо, а то вдруг юзер напишет в тексте text "AND …) и чего там еще... :(

_________________
:: metal kick ass ::
vexoid
новый человек
0
Сообщения: 295
Зарегистрирован: 15.12.02
Откуда: msk
Сообщение Добавлено: 5 Сентябрь 2003, 02:07:32 
эм .) ну напишет ? .) и что далее ?
AND что ? когда у него указано в какое поле он будет писать... and вообще к where clause применимо... .)

_________________
lost world... lost life... lost tomorrow... only night
BruNko
новый человек
0
Сообщения: 88
Зарегистрирован: 26.06.02
Откуда: Нерюнгри
Сообщение Добавлено: 5 Сентябрь 2003, 08:21:18 
$text=param('text');
$result = $DB->do("INSERT INTO guestbook (text) VALUES ('$text')");

Но, пользователь может присвоить значению $text следующее - " ');
DELETE FROM `guestbook`; SELECT * FROM `guestbook` WHERE `text`=upper(' " и, в итоге получится вот такой вот запрос:

INSERT INTO guestbook (text) VALUES ('');
DELETE FROM `guestbook`;
SELECT * FROM `guestbook` WHERE `text`=upper('');


Я думаю, следует заменять ' на \' - и всё будет нормально
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 5 Сентябрь 2003, 15:41:22 
в моей mysql такое не проходит.
BruNko
новый человек
0
Сообщения: 88
Зарегистрирован: 26.06.02
Откуда: Нерюнгри
Сообщение Добавлено: 5 Сентябрь 2003, 18:14:04 

gregzem писал(а):
в моей mysql такое не проходит.



Запрос формируется через PHP или Perl - поэтому разницы думаю нет! может где то опечатка в самом запросе, но в целом технология защиты и взлома такая!
ptitov
новый человек
0
Сообщения: 175
Зарегистрирован: 22.07.02
Откуда: Москва
Сообщение Добавлено: 11 Сентябрь 2003, 18:00:48 
Какова у народа любовь к изобретательству оказалась :-)
Давно ведь есть http://www.mysql.com/doc/en/mysql_real_ … tring.html и её реализация в PHP - http://ru.php.net/manual/ru/function.my … string.php

_________________
Иногда хостер
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 12 Сентябрь 2003, 09:42:16 
ptitov, оную и юзаю только из DBI

_________________
:: metal kick ass ::
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 16 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100