Перейти к содержимому



Безопасное добавление данных в БД

#1

Поделиться сообщением #1



Banderas

Banderas
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 13 Ноябрь 2011 - 01:47

Покажите какими функциями вы делаете безопасное добавление данных в БД! Спасибо!
Например я делаю примерно так:
$title = addslashes($_POST['title']);
$m_key = addslashes($_POST['m_key']);
$m_d = addslashes($_POST['m_d']);
$short_d = addslashes($_POST['short_d']);
$description = addslashes($_POST['description']);

$sql = mysqli_query($db, "UPDATE `items` SET `title`='$title', `m_key`='$m_key', `m_d`='$m_d', `short_d`='$short_d', `description`='$description', `img`='$img', `price`='$_POST[price]', `bimg`='$bimg' WHERE `id`='$_POST[id]'" ) or die(mysqli_error($db));

Ну а при вызове с БД, просто через цикл делаю stripslashes()
Вот так вот:
$sql = mysqli_query($db, 'SELECT * FROM `items` WHERE `id`='.$id.'') or die(mysqli_error($db));
$mas_i = mysqli_fetch_assoc($sql);
foreach ($mas_i as $val) stripslashes($val);

 

 

  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Обработка PHP-кода - полученного из базы данных
  2. Фрагмент кода - добавления контента в БД
  3. Проблема с базой данных
  4. Добавление в БД с помощь javascript
  5. Настраиваем подключение к базе данных

#2

Поделиться сообщением #2



matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 13 Ноябрь 2011 - 17:54

mysqli_real_escape_string()... и не нужно мучиться с двойной обработкой addslashes()/stripslashes() ;)
  • 0


#3

Поделиться сообщением #3



Maverick

Maverick
  • Модератор
  • 87 сообщений
  • Репутация: 11

Отправлено 19 Ноябрь 2011 - 23:34

Приветствую! При добавлении данных в БД пользуюсь функцией addslashes. Также проверяю данные перед добавлением в базу на фильтры (числа, строки, буквы) и соответствуют ли они своему формату. То есть, например чтобы в переменной (например Дата рождения) была именно дата рождения (например в формате 11.11.2011) а не буквенные, символьные, и другие плохие знаки и символы.
  • 0

#4

Поделиться сообщением #4



oroom

oroom
  • Неактивные
  • 24 сообщений
  • Репутация: 1

Отправлено 23 Ноябрь 2011 - 12:09

Использую подготовленные выражения, если работаю с чистым php, ни и средства фрейморков, если с ними.
И всем советую попробовать подготовленные выражения, тогда можно забыть о экранировании.
  • 0

#5

Поделиться сообщением #5



admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 55

Отправлено 23 Ноябрь 2011 - 13:38

oroom, что за подготовленные выражения?
  • 0

#6

Поделиться сообщением #6



matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 23 Ноябрь 2011 - 14:32

Регулярки, скорее всего... ИМХО не самое лучшее решение.
  • 0


#7

Поделиться сообщением #7



admin

admin
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 55

Отправлено 23 Ноябрь 2011 - 14:34

Зачем регулярки, если есть готовые функции, которые работают быстрее?


  • 0

#8

Поделиться сообщением #8



matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 23 Ноябрь 2011 - 14:42

Вот и я о том же - не самое лучшее решение ;)
  • 0


#9

Поделиться сообщением #9



Banderas

Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 23 Ноябрь 2011 - 16:12

как вы думаете, как написана функция mysqli_real_escape_string() ???
не думаю что поиск опасных символов сделан через strpos(), хоть она и быстрее..
  • 0


#10

Поделиться сообщением #10



yury

yury
  • Пользователь
  • 632 сообщений
  • Репутация: 181

Отправлено 23 Ноябрь 2011 - 18:31

oroom, что за подготовленные выражения?

См по ссылке: Подготовленные выражения
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru