[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: возможна ли sql инъекция?
dsa
Здравствуйте возник вопрос по безопасности ))
Собственно суть такова возможно ли что в $form_1 (из примера ниже) попадет sql инъекция при условии что POST данные перед записью в SESSION хорошо фильтруются?
if(isset($_POST['submit'])){
$n = isset($_POST['n']) ? abs(intval($_POST['n'])) : 0;

if($n > 0 && $n < 80){
if(isset($_POST['vubor'])){
if($_POST['vubor'] == 1){
$_SESSION['form_1'] = serrialize(
array(
'n' => $n
)
);

}

//redirect
}else
echo'<form action="index.php" method="POST">
Вы уверены ?<br/>
<select name="vubor" title="Выберите">
<option value="1">Да</option>
<option value="2">Нет</option>
</select><br/>
<input type="submit" name="submit" value="Подтвердите"/>
</form>'
;
}else
echo'Ошибка!';
}else
echo'<form action="index.php" method="POST">
<input type="text" name="n" maxlength="25"/><br/>
<input type="submit" name="submit" value="Далее"/>
</form>'
;

if(!empty($_SESSION['form_1'])){
$form_1 = unserrialize($_SESSION['form_1']);

// Запись $form_1['n'];




unset($_SESSION['form_1']);
}




Спустя 5 часов, 14 минут, 38 секунд (6.06.2012 - 17:36) Семён написал(а):
с intval возможна)

Спустя 18 минут, 4 секунды (6.06.2012 - 17:54) Белый Тигр написал(а):
intval($_POST['n']) уже исключает такую возможность

Спустя 18 минут, 23 секунды (6.06.2012 - 18:13) inpost написал(а):
Белый Тигр
А её нет в определённом случае.
С включенными register_globals передавать $_GET['n'];

Я не уверен, что в данном случае пройдет, так как такое тестировать надо.

Спустя 10 минут, 18 секунд (6.06.2012 - 18:23) dsa написал(а):
inpost, register_globals выключен
Семён, всегда считал что число перед записью достаточно обработать intval-ом.. разве нет?

Спустя 1 час, 23 минуты, 1 секунда (6.06.2012 - 19:46) dsa написал(а):
inpost
кстати проверил и с register_globals

// http://test1.ru?n=-8hgfh
echo 'Лок $n: ' . $n . '<br/>';
$n = isset($_POST['n']) ? abs(intval($_POST['n'])) : 0;
echo 'POST $n: ' . $n . '<br/>';
$n = isset($_GET['n']) ? abs(intval($_GET['n'])) : 0;
echo 'GET $n: ' . $n . '<br/>';

Лок $n: -8hgfh
POST $n: 0
GET $n: 8
так что тут вроде все корректно )) а вот возможно ли $_SESSION['form_1'] как то подделать?

Спустя 59 минут, 37 секунд (6.06.2012 - 20:46) inpost написал(а):
dsa
Ну ты дописал скрипт тем самым защитил от register globals.

Всё остальное норм.
Быстрый ответ:

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