В настоящее время штудирую все про безопасность, в том числе и темы на форуме, голова кругом идет)))
У меня возникло 1000 вопросов....Хочется во все вникнуть и понять.
1) У меня есть форма, где можно редактировать урл вида ( site/razdel.html ).
Перед отправкой в базу, прогоняю через mysql_real_escape_string и проверяю есть ли такой урл в базе.
Нужно ли здесь прогонять через регулярку(отсечь http://) ?
Спустя 19 минут, 58 секунд (19.11.2011 - 15:16) Игорь_Vasinsky написал(а):
какие виды url могут быть?
GET параметры - допустимы в url? или тока домен + страница?
GET параметры - допустимы в url? или тока домен + страница?
Спустя 10 минут, 48 секунд (19.11.2011 - 15:27) inpost написал(а):
Sergen
Для запросов в БД достаточно mysql_real_escape_string.
Для запросов в БД достаточно mysql_real_escape_string.
Спустя 40 секунд (19.11.2011 - 15:27) alex12060 написал(а):
Тут обязательно нужно проверять по регулярному выражению. Как минимум, есть функция специальные, filter_var()
Если пройдет проверку, можно не делать mysql_real_escape_string(), так как мы знаем, что у нас в строке нет "опасных" символов.
Если пройдет проверку, можно не делать mysql_real_escape_string(), так как мы знаем, что у нас в строке нет "опасных" символов.
Спустя 2 минуты, 11 секунд (19.11.2011 - 15:29) inpost написал(а):
alex12060
Зачем? Зачем нужны все эти попытки проверок, регулярок, когда в нашем случае идёт лишь сравнение строки1 с значением в БД. Для сравнения достаточно лишь чтобы при запросе не была SQL-INJ, а против неё есть mysql_real_escape_string, и всё
Зачем? Зачем нужны все эти попытки проверок, регулярок, когда в нашем случае идёт лишь сравнение строки1 с значением в БД. Для сравнения достаточно лишь чтобы при запросе не была SQL-INJ, а против неё есть mysql_real_escape_string, и всё
Спустя 8 минут, 27 секунд (19.11.2011 - 15:38) Игорь_Vasinsky написал(а):
filter_var - гонит.
$url = "hehe2http://site.ru/index.php?act=contacts";
if(filter_var($url, FILTER_VALIDATE_URL))
{
echo str_replace("http://", "", $url);
}
else
echo "This url is not valid!";
Спустя 18 часов, 45 минут, 41 секунда (20.11.2011 - 10:24) Sergen написал(а):
Как я понял, регулярка лишней не будет, правда до их изучения я дойду в аккурат к Новому Году)))
Все будут водку пьянствовать а я регулярки штудировать!
to Игорь, проверка по человекопонятному урлу, без домена и без http (относительная ссылка)
Я к вечеру решил что лучше вот так, (не только для этого случая, а для проверки строковых вообще. А в INSERT для кучи значения прогоняю, через mysql_real_escape_string() )
Потестировал, вроде все отсекается, только вот терзают смутные сомнения...
Все будут водку пьянствовать а я регулярки штудировать!
to Игорь, проверка по человекопонятному урлу, без домена и без http (относительная ссылка)
Я к вечеру решил что лучше вот так, (не только для этого случая, а для проверки строковых вообще. А в INSERT для кучи значения прогоняю, через mysql_real_escape_string() )
function sss($var)
{
if (get_magic_quotes_gpc()) {$var = stripslashes($var);}
$var = htmlspecialchars($var);
$var = strip_tags($var);
return $var;
}
Потестировал, вроде все отсекается, только вот терзают смутные сомнения...
Спустя 42 минуты, 16 секунд (20.11.2011 - 11:06) inpost написал(а):
Sergen
Лишней не будет?
А вот то, что я ответил тебе, а потом объяснял Игорю - это то, что регулярка лишняя в данном случае.
Лишней не будет?
$a = 1;и вот теперь давай ещё и регулярку добавим :) Всё равно лишней не будет.
if($a != 1)
$a = 1;
$a = (isset($a) ? $a : 1);
$a = (int)$a;
$a = htmlspecialchars($a);
$a = str_replace('+','',$a);
$a = mysql_real_escape_string($a);
А вот то, что я ответил тебе, а потом объяснял Игорю - это то, что регулярка лишняя в данном случае.
Спустя 8 минут, 21 секунда (20.11.2011 - 11:14) Игорь_Vasinsky написал(а):
да. я в суть вопроса не вник как следует, если нужно сравнивание с БД - то зачем услилия тратить на проверку - url ли туда уходит - если ты будешь сравнивать с урл? достаточно просто mysql_real_escape_string() роверить (обезопасить) и всё - а урл там или чёрт лысый - это дело десятое.
Спустя 26 минут, 42 секунды (20.11.2011 - 11:41) Sergen написал(а):
Я понял. Спасибо за ответ.
В моем случае выручает то, что url проверяется по базе. А если бы не было такого?
Насколько мой код (sss) действенен? Имею виду для строк.
Кстати, заметил, что здесь на форуме большинство людей "любят" больше htmlspecialchars нежели htmlentities. Я разницы особой не уловил, кроме как небольших проблем с кодировкой у второго. И еще, зачем ставят на выводе htmlspecialchars? Неужели связано с html версткой?
В моем случае выручает то, что url проверяется по базе. А если бы не было такого?
Насколько мой код (sss) действенен? Имею виду для строк.
Кстати, заметил, что здесь на форуме большинство людей "любят" больше htmlspecialchars нежели htmlentities. Я разницы особой не уловил, кроме как небольших проблем с кодировкой у второго. И еще, зачем ставят на выводе htmlspecialchars? Неужели связано с html версткой?
Спустя 9 часов, 4 минуты, 23 секунды (20.11.2011 - 20:45) inpost написал(а):
Sergen
Связано с XSS уязвимостью, поэтому и ставить надо.
Связано с XSS уязвимостью, поэтому и ставить надо.
Спустя 20 минут, 52 секунды (20.11.2011 - 21:06) Sergen написал(а):
Цитата (inpost @ 20.11.2011 - 17:45) |
Sergen Связано с XSS уязвимостью, поэтому и ставить надо. |
Уж извините за дотошность, не совсем понял. Если данные прошли через эту функцию, т.е уже обезврежены, зачем еще раз при выводе?