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

Форум Регулярные Выражения

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

 

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

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

тема: защита от SQL-иньекций с помощью java-script и regexpr
 
 автор: straiver   (04.04.2006 в 23:38)   письмо автору
 
 

Задача состоит в следущем: имеется поле, куда пользователь вводит свой url(который затем помещается в базу данных) и имеется скрипт, обрабатывающий вводимые данные. Как сделать чтобы cracker не смог ввести вместе с url SQL запрос? Пытался написать

/(?:(\w+:\/\/)|(w+\.))[-\w]+(\.[-\w]+)*(?<! (^\' " <> \!)*)/i
, но почему то не пропускает вообще никакую запись.Скрипт ниже.

var www= /(?:(\w+:\/\/)|(w+\.))[-\w]+(\.[-\w]+)*/i ; 
    if((document.guestbook.www.value.length > 0) && document.guestbook.www.value.match(www) == null))
    {
    alert('Неверно указано значение поля "сайт"');
    return false;
    }

   
 
 автор: targa   (05.04.2006 в 01:40)   письмо автору
 
   для: straiver   (04.04.2006 в 23:38)
 

Он (крякер) может отрубить у себя javascript'ы и обойти проверку.

   
 
 автор: Trianon   (05.04.2006 в 10:15)   письмо автору
 
   для: straiver   (04.04.2006 в 23:38)
 

Защиту от инъекций не делают на клиентской стороне.
Приведите фрагмент php-скрипта, который берет данные формы и формирует SQL-запрос. Проверять на дырявость нужно именно его.

   
 
 автор: straiver   (05.04.2006 в 13:48)   письмо автору
 
   для: Trianon   (05.04.2006 в 10:15)
 

Спасибо, чуть не сделал глупость. Вот фрагмент из php-скрипта:
// функция очистки строки от тегов и др. гадости
function clean_text($text)
  {
      $cleaned_text=stripcslashes($text);      
      $cleaned_text=trim($cleaned_text);
      $cleaned_text=htmlspecialchars($cleaned_text);
      return $cleaned_text;
  } 


// www - соответственно имя поля
if(!empty($_POST['www']))
    {
    $www=clean_text($_POST['www']);
    if(!strpos($www, 'http://'))
        $www='http://'.$www;
     if(!preg_match(/*не знаю как написать*/, $www))
    $www="";
   }

Ну и далее помещаем $www в базу данных.

   
 
 автор: Trianon   (05.04.2006 в 17:01)   письмо автору
 
   для: straiver   (05.04.2006 в 13:48)
 

Поглядите пожалуйста [url=?id_forum=3&id_theme=14355 ]здесь[/url].

   
 
 автор: straiver   (06.04.2006 в 21:46)   письмо автору
 
   для: Trianon   (05.04.2006 в 17:01)
 

Спасибо большое. Форум the best, ни в одной книге не найдешь столько полезной и исчерпывающей информации. Модераторам respect.

   
Rambler's Top100
вверх

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