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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Пару вопросов по безопасности
 
 автор: Z3RO   (18.07.2011 в 23:14)   письмо автору
 
 

Скажите, достаточно ли обрабатывать полученные из форм данные только этими функциями:
$str = htmlspecialchars(trim($str));

  Ответить  
 
 автор: Valick   (18.07.2011 в 23:22)   письмо автору
 
   для: Z3RO   (18.07.2011 в 23:14)
 

Вы случайно не отсюда пришли?
нет не достаточно
а htmlspecialchars вообще не к месту если следующая строка не echo $str;

  Ответить  
 
 автор: Z3RO   (18.07.2011 в 23:37)   письмо автору
 
   для: Valick   (18.07.2011 в 23:22)
 

Нет. Не оттуда. Так я обрабатываю все строки принятые от пользователей перед записью в базу. Как тогда правильно?

  Ответить  
 
 автор: MHz   (18.07.2011 в 23:49)   письмо автору
 
   для: Z3RO   (18.07.2011 в 23:37)
 

Отчего стоит защищаться в первую очередь:
- PHP-инъекция
- SQL-инъекция
- XSS

  Ответить  
 
 автор: Z3RO   (19.07.2011 в 00:51)   письмо автору
 
   для: MHz   (18.07.2011 в 23:49)
 

Вот скажите, в этом коде есть дыра:


/*****************************Получаем ID*****************************/
if(isset($_GET['id']))
$id = urlencode(trim($_GET['id'])); // Из адресной строки
else
$id = $user_id; // Если в адресной строке ID не передан, принимаем ID текущего пользователя
/*********************************************************************/

$user = mysql_fetch_array(mysql_query(
"SELECT `id`, `sex`, `name`, `town`, `email`,
`telephone`, `icq`, `skype`, `jabber`, `site`,
`birth`, `realname`, `about`, `status`,`status_date`,
`rights`, `admp` FROM `users` WHERE `id` = '" . $id . "';"
)); //Получаем данные о пользователе
if($user)
{
// Код при правильном ID
}
else
header("Location: " . $home . "/id" . $user_id); // Если ID введён не корректно, переадресовываем на собственную анкету

  Ответить  
 
 автор: Valick   (19.07.2011 в 06:51)   письмо автору
 
   для: Z3RO   (19.07.2011 в 00:51)
 

Да, у Вас классический случай SQL-инъекции. id - это целые числа и $_GET['id']
нужно обрабатывать функцией intval()
надо строку
$id = urlencode(trim($_GET['id']));

заменить на
$id = abs(intval($_GET['id']));

  Ответить  
 
 автор: Саня   (19.07.2011 в 08:06)   письмо автору
 
   для: Valick   (19.07.2011 в 06:51)
 

abs тут не нужен.
!empty() && ctype_digit() и всё.

  Ответить  
 
 автор: Z3RO   (19.07.2011 в 08:11)   письмо автору
 
   для: Valick   (19.07.2011 в 06:51)
 

Ок.Спс

  Ответить  
 
 автор: cheops   (19.07.2011 в 01:39)   письмо автору
 
   для: Z3RO   (18.07.2011 в 23:14)
 

Нет, не достаточно. Вообще htmlspecialchars() предназначена для обработки вывода и скорее защищает от XSS-инъекции. От SQL-инъекции, более актуальные для баз данных, нужно числа приводить к числам, а строки - экранировать.

  Ответить  
 
 автор: Z3RO   (19.07.2011 в 13:28)   письмо автору
 
   для: cheops   (19.07.2011 в 01:39)
 

Может ктото дать ссылку на хорошую статью в которой рассказывается о различных уязвимостях и методах борьбы с ними?

  Ответить  
 
 автор: Саня   (19.07.2011 в 14:01)   письмо автору
 
   для: Z3RO   (19.07.2011 в 13:28)
 

http://softtime.ru/info/articlephp.php здесь посмотрите

  Ответить  
 
 автор: Z3RO   (19.07.2011 в 16:46)   письмо автору
 
   для: Саня   (19.07.2011 в 14:01)
 

Спасибо. То, что нужно.

  Ответить  
Rambler's Top100
вверх

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