Оценить вероятность SQL inj

autocalc
На сайте с 11.05.2011
Offline
52
912

На сайте имеется функция "чистки":


function clear($string){
$string=htmlspecialchars(stripslashes(strip_tags(trim($string))));
$sim=explode(',','#,%,^,*,{,},[,],|,`,~,<,>');
for($i=0;$i<count($sim);$i++){$string=str_replace($sim[$i],'',$string);}
return $string;
}

Местами применяется mysql_real_escape_string();

Есть ли какой способ обойти такую защиту?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

В 99% достаточно обычного mysql_real_escape_string

Кстати вы чего чистите то так? Просто нашли все функции по работе со строками и запихали?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
DV
На сайте с 01.05.2010
Offline
644
#2

Функцию в функцию засуньте. htmlentities забыли ;)

Теперь уж точно не пройдут.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
autocalc
На сайте с 11.05.2011
Offline
52
#3

Pwd потерял, теперь вот дыру ищу...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4

Что такое Pwd?

autocalc
На сайте с 11.05.2011
Offline
52
#5
LEOnidUKG:
Кстати вы чего чистите то так? Просто нашли все функции по работе со строками и запихали?

Это один из первых вариантов, который я придумал будучи менее опытным.

---------- Post added 09-02-2012 at 11:07 ----------

LEOnidUKG:
Что такое Pwd?

password for login 😂

DV
На сайте с 01.05.2010
Offline
644
#6

А я думал, Print Work Directory :D

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7
autocalc:

password for login 😂

А вы уверены, что через дыру, а не через обычный брут?

Max_Q
На сайте с 14.11.2011
Offline
9
#8

Htmlspecialchars в вашем случае пропустит: '

Чтобы этого не произошло в htmlspecialchars необходимо передавать параметр ENT_QUOTES.

$str = htmlspecialchars($string, ENT_QUOTES);

А еще лучше передавать и кодировку.

$sim=explode(',','#,%,^,*,{,},***91;,***93;,|,`,~,<,>');

Здесь я не увидел замены кавычки: '.

Но и все равно возможна инъекция после это фильтра, если вы, например, так используете эту функцию:

$str=clear($_GET['str']);

$sql='select * from table where str=$str';

autocalc
На сайте с 11.05.2011
Offline
52
#9
LEOnidUKG:
А вы уверены, что через дыру, а не через обычный брут?

Я брутом никогда не занимался, а SQL inj - еще и хорошая практика

---------- Post added 09-02-2012 at 11:29 ----------

Max_Q:
Htmlspecialchars в вашем случае пропустит: '

Т.е. по сути можно использовать банальную вставку в URL типа ' OR 1 = 1?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#10
autocalc:
Я брутом никогда не занимался, а SQL inj - еще и хорошая практика

При чём тут вы?!

ТС, просто прогоняйте текстовые данные через mysql_real_escape_string() и всё, больше ничего не нужно.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий