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

Форум MySQL

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

 

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

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

тема: Функция защиты от mysql-injection
 
 автор: Loneliness   (15.09.2010 в 22:02)   письмо автору
 
 

Встретилась такая функция:
 function check_sql_inject()
  {
    $badchars = array("--","truncate","exec",    ";","'","*", "drop", "-2", "-3","-4", "-5", "-6", "-7", "-8", "-9");
    foreach($_POST as $value)
    {
        foreach($badchars as $bad)
        {
            if(strstr(strtolower($value),$bad)<>FALSE )
            {
                die('ERROR');
            }
        }
    }
  }

Насколько она эффективна и целесообразна ли вообще к применению? Что можно потенциально сделать отправляя данные из стоп-списка это функции в базу? И что в итоге необходимо и достаточно сделать для безопасности с данными записываемыми в базу, если в них код HTML?

  Ответить  
 
 автор: nikita2206   (15.09.2010 в 22:05)   письмо автору
 
   для: Loneliness   (15.09.2010 в 22:02)
 

> Насколько она эффективна и целесообразна ли вообще к применению?
Даже не знаю как и сказать, это фигня. Полная хрень.

> И что вообще нужно сделать для безопасности с данными записываемыми в базу, если в них код HTML?
mysql_real_escape_string()

  Ответить  
 
 автор: mihdan   (16.09.2010 в 17:44)   письмо автору
 
   для: Loneliness   (15.09.2010 в 22:02)
 

Чушь

  Ответить  
 
 автор: psychomc   (16.09.2010 в 18:19)   письмо автору
 
   для: Loneliness   (15.09.2010 в 22:02)
 

к успеху идёте

  Ответить  
 
 автор: ~AquaZ~   (16.09.2010 в 18:45)   письмо автору
 
   для: Loneliness   (15.09.2010 в 22:02)
 

бред

  Ответить  
 
 автор: bishake   (16.09.2010 в 20:16)   письмо автору
 
   для: Loneliness   (15.09.2010 в 22:02)
 

Используйте addslashes() и будет совет вам да любовь ;)

  Ответить  
 
 автор: lElectroHardl   (16.09.2010 в 23:04)   письмо автору
 
   для: bishake   (16.09.2010 в 20:16)
 

Это 1/3 вариантов.
1-й. nikita2206 (15.09.2010 в 22:05)
2-й. Ваш.
3-й. preg_replace();

  Ответить  
 
 автор: Trianon   (16.09.2010 в 23:37)   письмо автору
 
   для: lElectroHardl   (16.09.2010 в 23:04)
 

ну да.
из которых корректен только один.

  Ответить  
 
 автор: lElectroHardl   (17.09.2010 в 16:56)   письмо автору
 
   для: Trianon   (16.09.2010 в 23:37)
 

Это еще почему?
Да, от самих инъекций да, только mysql_real_escape_string(), но вообще защищаться можно любым из 3-х вариантов. Все 3 работать будут прекрасно.

  Ответить  
 
 автор: Trianon   (17.09.2010 в 17:11)   письмо автору
 
   для: lElectroHardl   (17.09.2010 в 16:56)
 

чтобы защищаться вообще, нужно купить себе парабелум.

  Ответить  
 
 автор: lElectroHardl   (17.09.2010 в 17:31)   письмо автору
 
   для: Trianon   (17.09.2010 в 17:11)
 

Неправильно выразился.
Я к тому, что у меня, например, такая функция:
<? function author($text
{
    
$text trim($text);
    
$text preg_replace("/[^a-zA-Zа-яА-ЯЁё\s]{1,25}/"""$text);
    return 
$text;
}

Зачем тут еще и mysql_real_escape_string() использовать? Разве после обработки pre_replace, в скрипт смогут пройти не отсеянные данные?

  Ответить  
 
 автор: Trianon   (17.09.2010 в 17:45)   письмо автору
 
   для: lElectroHardl   (17.09.2010 в 17:31)
 

Может и не могут. Может и могут. Какая разница?
я даже смотреть не стану, могут или нет.
Это не повод нарушать четкие алгоритмы корректной обработки данных.
На красный свет нужно стоять независимо от того, есть опасность с кем-то столкнуться, или нету.

  Ответить  
 
 автор: lElectroHardl   (17.09.2010 в 18:06)   письмо автору
 
   для: Trianon   (17.09.2010 в 17:45)
 

Я просто ни понимаю, зачем делать 2 действия, которые по сути делают одно и тоже (фильтруют данные)?

  Ответить  
 
 автор: Trianon   (17.09.2010 в 18:12)   письмо автору
 
   для: lElectroHardl   (17.09.2010 в 18:06)
 

нет такого действия - фильтровать данные.
Есть действие - преобразовать строку из одного языка в другой.

PS. На это форуме я об этом говорил не один, не два и не три раза.
Поднимите поиск в конце концов.

  Ответить  
 
 автор: neadekvat   (17.09.2010 в 20:04)   письмо автору
 
   для: lElectroHardl   (17.09.2010 в 17:31)
 

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

А про mysql_real_escape_string - это должна быть вообще привычка, такая же, как дыхание. Данные подставляются в запрос? Либо указанная функция (если ожидается строковой формат), либо приведение к числовому типу (если ожидается число).

  Ответить  
 
 автор: psychomc   (17.09.2010 в 01:41)   письмо автору
 
   для: lElectroHardl   (16.09.2010 в 23:04)
 

напишите еще
4-й. отказаться от использования субд

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

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