есть у меня в коде $_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 и как думаешь, это обезопасит?

Спустя 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 раза дольше
Для числа достаточно (int)$var; , intval работает в 2,5 раза дольше

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