|
|
|
| Задача состоит в следущем: имеется поле, куда пользователь вводит свой 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;
}
|
| |
|
|
|
|
|
|
|
для: straiver
(04.04.2006 в 23:38)
| | Он (крякер) может отрубить у себя javascript'ы и обойти проверку. | |
|
|
|
|
|
|
|
для: straiver
(04.04.2006 в 23:38)
| | Защиту от инъекций не делают на клиентской стороне.
Приведите фрагмент php-скрипта, который берет данные формы и формирует SQL-запрос. Проверять на дырявость нужно именно его. | |
|
|
|
|
|
|
|
для: 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 в базу данных. | |
|
|
|
|
|
|
|
для: straiver
(05.04.2006 в 13:48)
| | Поглядите пожалуйста [url=?id_forum=3&id_theme=14355 ]здесь[/url]. | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 17:01)
| | Спасибо большое. Форум the best, ни в одной книге не найдешь столько полезной и исчерпывающей информации. Модераторам respect. | |
|
|
|