Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Защита $_GET параметра

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: moonfox   (14.02.2008 в 13:14)   письмо автору
 
   для: mihdan   (14.02.2008 в 10:55)
 

вам не нужно
а взломщику всеравно что у вас int или char
вроде)

   
 
 автор: mihdan   (14.02.2008 в 10:55)   письмо автору
 
   для: moonfox   (14.02.2008 в 05:28)
 

Зачем мне в запросе строка, когда поле типа integer?

   
 
 автор: GeorgeIV   (14.02.2008 в 10:15)   письмо автору
 
   для: moonfox   (14.02.2008 в 05:28)
 

Просто возьмите за правило никогда не подсовывать в запрос то, что пришло с инета. пропустите через какую то промежуточную функццию, и все лишние хвосты отвалятся или вызовут ошибку.

   
 
 автор: moonfox   (14.02.2008 в 05:28)   письмо автору
 
   для: а-я   (14.02.2008 в 04:26)
 

а какая разница что будет добавленно в where id
текст или цифра - это всеравно строковое значение...
или нет?
в любом случае там нужна будет кавычка для обрыва запроса и подстановки union...
или?

   
 
 автор: а-я   (14.02.2008 в 04:26)   письмо автору
 
   для: brys   (12.02.2008 в 18:51)
 

а что вы думаете на счет функции ctype_digit()
можно ли на нее положиться?

<?
 
if(ctype_digit($_GET['id']))
  echo 
'ГУД!!!';
 else
  echo 
'Не есть гуд!';
?>

   
 
 автор: Lstasss   (14.02.2008 в 02:35)   письмо автору
 
   для: bronenos   (13.02.2008 в 15:53)
 

а мне вот нравится работать с stmt в mysqli

$stmt = $mysqli->stmt_init();
$stmt->bind_param('ssi',$string_var_1, $string_var_2, $integer);
$stmt->execute();

зачем на уровне PHP делать то, что можно переложить на БД, притом что она это умеет делать лучше?

   
 
 автор: bronenos   (13.02.2008 в 15:53)   письмо автору
 
   для: Freddie_X   (13.02.2008 в 15:24)
 

Я и числа в кавычки беру, все пашет у меня везде

   
 
 автор: Freddie_X   (13.02.2008 в 15:24)   письмо автору
 
   для: Thrasher   (13.02.2008 в 14:33)
 

Аааа, всё понял! Спасибо за разъяснение :)

   
 
 автор: Thrasher   (13.02.2008 в 14:33)   письмо автору
 
   для: Freddie_X   (13.02.2008 в 13:45)
 

Когда ожидается прием числовых данных, то:
$id = (int)$_GET['id'];

и уязвимости нет.

   
 
 автор: Freddie_X   (13.02.2008 в 13:45)   письмо автору
 
   для: kasmanaft   (13.02.2008 в 13:30)
 

Ну, если переданные запросу данные - строковые, то с этим понятно!
А если Числовые данные? Их же не надо выделять кавычками. Получается, что можно сделать скл-инъекцию даже с mysql_escape_string()?
К примеру:
<?php
mysql_query
("SELECT * FROM table WHERE id = $id");
// если в $id вписать, к примеру,
// 1; UPDATE table SET id = 666 WHERE id = 1
// то можно изменить любые числовые данные в БД
?>

Разъясните, пожалуйста!

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования