Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка CSV файла на предмет SQL-инъекций 
:(
    Опции темы
GrafF812
Дата 18.5.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Здравствуйте, у меня на сайте реализована возможности загрузки csv файла и его парсинга. Все данные, которые считываются из этого файла записываются в БД, может ли пользователь записать в поле какой-нибудь вредоносный код (типа DROP TABLE `users`), который повредит базу. Если да , то подскажите как от этого защититься?
Вот пример cvs файла:
Код

1#BMW#X5
2#Ferrari#Enzo
3#Toyota#Corolla

PM MAIL   Вверх
bars80080
Дата 19.5.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



смотря как записываются данные в базу
PM MAIL WWW   Вверх
Sanchezzz
Дата 19.5.2010, 13:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



как как регулярками =) 
   удалять , экранировать ,
      тока вставить проверку.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aikus
Дата 19.5.2010, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 29.11.2007

Репутация: нет
Всего: 1



Цитата(Sanchezzz @  19.5.2010,  13:15 Найти цитируемый пост)
регулярками

Ну можно ещё типа mysql_real_escape_string
PM MAIL   Вверх
GrafF812
Дата 19.5.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Цитата(bars80080 @  19.5.2010,  00:10 Найти цитируемый пост)
смотря как записываются данные в базу 

запросы такого вида:
Код

$sql="INSERT INTO `cars` SET `name`=$name, `model`=$model;";

переменные $name и $model - это значения полей.
PM MAIL   Вверх
ksnk
Дата 19.5.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

$sql=sprintf('INSERT INTO `cars` SET `name`="%s", `model`="%s";',mysql_real_escape_string($name),mysql_real_escape_string($model));



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
GrafF812
Дата 19.5.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



ksnk, спасибо. могу ли я весь массив строки прогнать через mysql_real_escape_string () ?
Код

$arr = array('2','Ferrari','Enzo');
$arr = mysql_real_escape_string ($arr);


PM MAIL   Вверх
bars80080
Дата 19.5.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нет и не зачем. напишите маленькую функцию, которая будет принимать в себя не распарсенную строку, а возвращать готовый запрос
PM MAIL WWW   Вверх
GrafF812
Дата 19.5.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



bars80080, дело в том, что запросы у меня разные, и массивы имеют разные размерности, для каждого писать свою функцию - это не реально. Мне было бы удобно, если бы можно было массив сразу распарсить с помощью  mysql_real_escape_string () и больше об этом не думать. Можно ли так? 
PM MAIL   Вверх
bars80080
Дата 19.5.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(GrafF812 @  19.5.2010,  19:09 Найти цитируемый пост)
для каждого писать свою функцию - это не реально

ну, раз так не реально, то надо автоматизм сделать, начиная с уровня, где уже нет работы со строкой.

к примеру, распарсиваешь строку и создаёшь такой массив:

Код

$arr = array(
    array('number', $num, 0),
    array('name', $name, 1),
    array('model', $model, 2),
);
// дальше всё делает одна функция, так как построение запросов ничем более не отличается
$sql = get_query('insert', $tab, $arr);
// в sql получаем INSERT INTO `cars` (`number`, `name`, `model`) VALUES (2, "Ferrary", "Enzzo");


PM MAIL WWW   Вверх
GrafF812
Дата 20.5.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



bars80080, спасибо Вам большое за объяснения. Скажите, использование mysql_real_escape_string() будет достаточным для защиты cvs от sql-инъекций ?
PM MAIL   Вверх
bars80080
Дата 20.5.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(GrafF812 @  20.5.2010,  16:28 Найти цитируемый пост)
использование mysql_real_escape_string() будет достаточным для защиты cvs от sql-инъекций

да
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.