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

Форум PHP

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

 

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

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

тема: Защита сайта от взлома

Сообщения:  [1-10]   [11-17] 

 
 автор: Николай2357   (24.01.2009 в 18:32)   письмо автору
 
   для: а-я   (24.01.2009 в 18:22)
 

Ну и в чём отличие? Я просто предложил вариант, который обрабатывает так же массивы, коли в том есть нужда. Я же не предлагал обработать всё и сразу, даже пример использования ниже написал. Другой вопрос, что я не уточнил, что обрабатывать нужно не суперглобальный массив, а каждый элемент массива по отдельности, по мере возникновения потребности. Посчитав это очевидным. Признаю свою ошибку второй раз, буду писать доходчивей, а то у многих действительно складывается впечатление, что я открываю Америку, не зная сторон света. Вот:

ДАННОЙ ФУНКЦИЕЙ НУЖНО ОБРАБАТЫВАТЬ ЛИТЕРАЛЬНЫЕ КОНСТАНТЫ (СТРОКОВЫЕ ПЕРЕМЕННЫЕ), ПОСТУПИВШИЕ ИЗ СУПЕРГЛОБАЛЬНЫХ МАССИВОВ $_GET, $_POST, $_COOKIE И $_REQUEST ДЛЯ ИСПОЛЬЗОВАНИЯ ЭТИХ ПЕРЕМЕННЫХ В SQL ЗАПРОСАХ.

PS А что мешает сделать вместо этого
<?
function XSS($A){// Защита от XSS-инъекций 
  
return htmlspecialchars($A); 
  }
просто
<?
htmlspecialchars
($A); 
Зачем еще одна функция?

  Ответить  
 
 автор: а-я   (24.01.2009 в 18:22)   письмо автору
 
   для: Николай2357   (23.01.2009 в 19:16)
 

Ну не знаю… я использую 2 функции..
И только там где надо.

SQL() в запросах
XSS() в разметке

Как раз таки обрабатываю каждую переменную отдельно.


<?
  
function SQL($A){// Защита от SQL-инъекций
  
return get_magic_quotes_gpc() ? $A mysql_escape_string($A);
  }
  
  function 
XSS($A){// Защита от XSS-инъекций
  
return htmlspecialchars($A);
  }
?>


В любой момент можно добавить или убрать, что-то в защите.. Но вроде этого вполне достаточно.

  Ответить  
 
 автор: Loki   (24.01.2009 в 18:03)   письмо автору
 
   для: Николай2357   (23.01.2009 в 20:20)
 

>Где в моём коде, нет даже всем посте, есть хоть одно слово $_GET, $_POST, $_COOKIE, $_REQUEST
Если Ваш код не относится к $_GET, $_POST, $_COOKIE, $_REQUEST, тогда это полный бред. Складывается впечатление что вы не представляете себе назначение функций которыми пользуетесь. Ну про то что мануал Вы не читали я молчу - это очевидно.

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 20:20)   письмо автору
 
   для: Trianon   (23.01.2009 в 19:57)
 

Одну секундочку. Где в моём коде, нет даже всем посте, есть хоть одно слово $_GET, $_POST, $_COOKIE, $_REQUEST? И где слово панацея?

>Потому что фразой "Вот функция, которой можно действительно безопасно обработать"
Вот это выдернуто из контекста, я совсем не то имел ввиду. Если дополнить до исходного варианта
переменные перед занесением в бд .
То без труда можно понять, что я имел ввиду варианты плана
<? 
$res 
"SELECT * FROM table WHERE `text`='".get_decode($_POST['text'])."'";

$res "SELECT * FROM table WHERE `text` IN (".implode(", "get_decode($_POST['text'])).")");
Хотя наверное действительно нужно писать более развернуто, не для всех это очевидно.

  Ответить  
 
 автор: Trianon   (23.01.2009 в 19:57)   письмо автору
 
   для: Николай2357   (23.01.2009 в 19:20)
 

Вы смешали в кучу два совершенно независимых процесса.
а) получение данных из суперглобальных массивов $_GET, $_POST, $_COOKIE, $_REQUEST и исправление их после работы механизма магических кавычек
б) формирование литеральных констант в тексте SQL-запроса.

Если (а) нужно не для (б) , если для (б) нужны данные вовсе не из (а) , если (б) потребуется выполнить несколько раз, предложенная Вами в качестве универсального средства функция только испортит данные.

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

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 19:20)   письмо автору
 
   для: Trianon   (23.01.2009 в 17:39)
 

Так уж и ничуть? Что тут не так, я вроде бы учитывал именно Ваши требования к обработке строковых значений. Потрудитесь пояснить.

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 19:16)   письмо автору
 
   для: а-я   (23.01.2009 в 17:17)
 

Ну фишка к примеру в том, что слэши удаляются только когда включены магические кавычки. Это для того, чтоб не суетиться при переносе на другой хостинг.

  Ответить  
 
 автор: Trianon   (23.01.2009 в 17:39)   письмо автору
 
   для: Николай2357   (23.01.2009 в 14:43)
 

Ваш код ничуть не лучше.

>Это применительно к строковым переменным.
Ага. Как же.

  Ответить  
 
 автор: а-я   (23.01.2009 в 17:17)   письмо автору
 
   для: Николай2357   (23.01.2009 в 14:43)
 

А в чем фишка?
Сначала удаляете слэши, а потом добавляете.

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 14:43)   письмо автору
 
   для: andMegaM   (23.01.2009 в 14:32)
 

Вот Вы не слушаете меня, запустите зтот класс и огребёте кучу проблем. Вот функция, которой можно действительно безопасно обработать переменные перед занесением в бд . Буде они массивом или нет. Если добавить рекурсию, можно обработать многомерные массивы.
<?
function get_decode($data)   
{   
    if(
is_array($data))   
    { 
        if(
get_magic_quotes_gpc()) 
        
$data array_map("stripslashes"$data); 
         
    
$data array_map("mysql_escape_string"$data); 
return  
$data;  
    }   
    else   
    { 
        if(
get_magic_quotes_gpc()) 
        
$data stripslashes($data); 
         
    
$data mysql_escape_string($data);           
return 
$data;   
    }   
}
Это применительно к строковым переменным.

  Ответить  

Сообщения:  [1-10]   [11-17] 

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

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