[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL инъекция
tmt0086
пишу модуль для сайта с нуля.. и вот я забеспокоился о безопасности..

есть у меня в коде $_GET['id']
и в дальнейшем этот id используется в запросе к бд в чистом виде, как в адресе..
из-за этого люди могут попытаться сделать инъекцию, безопасно ли будет так делать? (фильтрации нету никакой, ну как я понимаю, нужно фильтр сделать, чтобы все значки убирал или писал ERROR, если туда что то левое вставили например http://site.ru/index.php?id=-1'
http://site.ru/index.php?id=1+1 и тп )

подскажите как обезопасить



Спустя 15 минут, 5 секунд (12.06.2011 - 09:43) alex12060 написал(а):
эмм...

mysql_real_escape_string();
intval();
htmlspecialchars();

Спустя 6 минут, 20 секунд (12.06.2011 - 09:49) tmt0086 написал(а):
alex12060 и как думаешь, это обезопасит? smile.gif

Спустя 10 минут, 17 секунд (12.06.2011 - 09:59) AlmazDelDiablo написал(а):
Ну ID, как я понимаю, может быть только числовое и положительное? Тогда просто задай переменную $id = (int)$_GET['id']. А таком случае, если в $_GET['id'] будет не число, то оно превратиться в ноль, соот-но защита от инъекции готова.

Спустя 2 минуты, 24 секунды (12.06.2011 - 10:02) tmt0086 написал(а):
Цитата (AlmazDelDiablo @ 12.06.2011 - 06:59)
Ну ID, как я понимаю, может быть только числовое и положительное? Тогда просто задай переменную $id = (int)$_GET['id']. А таком случае, если в $_GET['id'] будет не число, то оно превратиться в ноль, соот-но защита от инъекции готова.

Сейчас опробуем, спасибо) с меня +

Спустя 1 минута, 44 секунды (12.06.2011 - 10:04) alex12060 написал(а):
Не просто так я это тебе это написал)

Проведи тест:

Создай тестовый файлик:


<?php

$_GET['id'][0] = '-1+order+by+id+asc'; // SQL Inj
$_GET['id'][1] = '<script>alert("XSS");</script>'; // XSS, XSRF


// Приводим к целому числу


echo 'Before: '.$_GET['id'][0];
echo '<br />Now: '.intval($_GET['id'][0]);

// Обезопасим себя от XSS

echo '<br /><hr />';

echo 'Before: '.$_GET['id'][1]; // Тут будет пусто
echo '<br />Now: '.htmlspecialchars($_GET['id'][1]); // Тут код

?>

Спустя 3 минуты, 38 секунд (12.06.2011 - 10:07) tmt0086 написал(а):
alex12060 и тебе спасибо! за пояснения

Спустя 6 часов, 12 минут, 38 секунд (12.06.2011 - 16:20) inpost написал(а):
tmt0086
Для числа достаточно (int)$var; , intval работает в 2,5 раза дольше smile.gif


_____________
Продаю людей. Дешего. Писать в ПС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.