Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: защита от sql инъекций

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: защита от sql инъекций
print322
Отправлено: 22 Августа, 2013 - 22:13:07
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Всем доброй ночи, подскажите как сделать 100 процентную защиту от sql инъекции здесь:

$logs = $_POST['text'];

(Отредактировано автором: 22 Августа, 2013 - 22:13:33)

 
 Top
esterio
Отправлено: 22 Августа, 2013 - 22:15:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
print322
Отправлено: 22 Августа, 2013 - 22:18:07
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




$logs = mysql_real_escape_string($_POST['text']);
так будет работать?
 
 Top
lastdays
Отправлено: 23 Августа, 2013 - 01:29:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




mysql_real_escape_string != Защита от sql inject.
 
 Top
LifePlay
Отправлено: 23 Августа, 2013 - 10:55:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Авг. 2010  
Откуда: Кобеляки, Украина


Помог: 0 раз(а)




print322 пишет:
$logs = mysql_real_escape_string($_POST['text']);
так будет работать?


Желательно

И совет: разберись что такое sql inject потому что нет функции которая защищает от неё. Есть, правильное использование функций, которое защищает.

Пример sql inject:

PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['text'] = '1 OR id = 2';
  3. $logs = mysql_real_escape_string($_POST['text']);
  4. $sql = "SELECT * FROM `table` WHERE `id` = $logs"; // Получается SELECT * FROM `table` WHERE `id` = 1 OR id = 2
  5.  


Тут вместо ожидаемой одной записи получишь 2, а если в $_POST['text'] передать '1 OR 1 = 1' то всю таблицу.

(Отредактировано автором: 23 Августа, 2013 - 11:02:31)

 
 Top
print322
Отправлено: 23 Августа, 2013 - 22:35:49
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




То есть $logs = "'".mysql_real_escape_string($_POST['text'])."'" будет правильнее?=)))
 
 Top
LIME
Отправлено: 23 Августа, 2013 - 22:56:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ну и бред
навели тень на плетень
все проще
для численных значений приводит к численным
для остальных пользуйся ф-фцию выше
много встречал у говнокодеров взятие числа в кавычки как выше
это от непонимания
но одно верно сказано
изучи вопрос
(Добавление)
телефон сменил пару слов но смысл остался верно
 
 Top
DelphinPRO
Отправлено: 23 Августа, 2013 - 23:44:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




print322 пишет:
То есть $logs = "'".mysql_real_escape_string($_POST['text'])."'" будет правильнее?=)))

prepared statements
(Добавление)
И, кстати, такой финт в PDO
LifePlay пишет:
Пример sql inject:
уже не прокатит


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 23 Августа, 2013 - 23:51:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




prepared statements скорее подход чем способ
думаю к нему надо переходить уже знаючи
...
уже не прокатит?...почему?
как-то mysqli только пользую
 
 Top
print322
Отправлено: 24 Августа, 2013 - 00:51:46
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




так всё-же $logs = mysql_real_escape_string($_POST['text']); будет правильнее?
 
 Top
LIME
Отправлено: 24 Августа, 2013 - 00:58:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




если это текстовый или перечисляемый тип в таблице то однозначно да
иначе нет
(Добавление)
или дата время
тоже да
вобщем все что в запросе берется в кавычки
другой вопрос в том ясир надо правильно валидировать данные
например если это дата то проверить на существование
тогда и экранировать нечего будет
панацеи нет
выше кроме бреда правильную вещь сказали
пойми что есть инъекция
загугли
 
 Top
DelphinPRO
Отправлено: 24 Августа, 2013 - 02:17:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




LIME пишет:
уже не прокатит?...почему?

там функция экранирования сама обрамляет выражение кавычками, которые совсем не нужно писать в запросе ни для каких типов. Вместо это вторым параметром передается константа, указывающая на тип данных. По умолчанию - string
Это если использовать простой квери, без подготовки

(Отредактировано автором: 24 Августа, 2013 - 02:19:02)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 24 Августа, 2013 - 02:33:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




те же помидоры вид сбоку
но дисциплинирует
меньше шансов зевнуть
если правильно понял
(Добавление)
просто я в принципе не беру ничего из супер массивов
в классах декларирую
массив для класса-валидатора и беру из него
тоже нельзя зевнуть))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB