[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL инъекция
wollk
Люди я сомневаюся что ктото знает как делать инъекцию эту, но как от неё защититься )))...

Вот норм защита ?

function limpiar($mensaje)
{
$mensaje = htmlentities(stripslashes(trim($mensaje)));
$mensaje = str_replace("'"," ",$mensaje);
$mensaje = str_replace(";"," ",$mensaje);
$mensaje = str_replace("$"," ",$mensaje);
$mensaje = str_replace("<"," ",$mensaje);
$mensaje = str_replace(">"," ",$mensaje);
$mensaje = str_replace("_"," ",$mensaje);
return $mensaje;
}

Да... не спорю... она много нужных символов убирает (( Или лучше
htmlspecialchars($mensaje)


Если все галимые то дайте нормальную)))



Спустя 7 минут, 30 секунд (30.01.2011 - 21:51) Dron19 написал(а):
ну во первых тут много кто умеет ее делать, к примеру я
а это, вообще не защита от sql инъекции
юзай mysql_real_escape_string, вообще перед выбором данных в бд напиши так

<?php

if(get_magic_quotes_gpc()) {

$YourVariables = stripslashes($YourVariables);

}

$YourVariables = mysql_real_escape_string($YourVariables);

// Тут твой запрос к примеру
$query = "SELECT * FROM table WHERE name='" . $YourVariables . "'";

$result = mysql_query($query);

?>


И всегда переменную с помощью которой ты вытаскиваешь значения закавычивай

Спустя 3 минуты, 50 секунд (30.01.2011 - 21:55) wollk написал(а):
А почему то что я нашёл то не защита ?... Я новичёк, и поэтому то что ты написал мне не понятно sad.gif ((((....Ну ладно... посмотрим ещё на ответы

Спустя 1 минута, 19 секунд (30.01.2011 - 21:56) twin написал(а):
Для начала тут почитай. Дальше сам думай.

Спустя 1 минута, 4 секунды (30.01.2011 - 21:57) Dron19 написал(а):
Создай таблицу user, с полями id, name и password, далее,
напиши такой код


<?php

$id = $_GET['id'];

$result = "SELECT name FROM user WHERE id=$id";

$result = mysql_query($result);

$arr = mysql_fetch_array($result);

do
{
echo $arr['name'];
}
while($arr = mysql_fetch_array($result));

?>

То есть обычный код и без защиты, даже без кавычек
Зайди на эту страницу и напиши к примеру вот так в адресной строке
http://localhost/test.php?id=1 and 1 <> 1 union select password as name from user where id=1
и посмотри что выведется :)

Спустя 1 минута, 56 секунд (30.01.2011 - 21:59) Dron19 написал(а):
попробуй, посмотри в чем прикол будет smile.gif
Думаю тебя это заинтересует

Спустя 59 секунд (30.01.2011 - 22:00) Dron19 написал(а):
и не забудь к базе подключиться

Спустя 11 минут, 17 секунд (30.01.2011 - 22:11) Dron19 написал(а):
я ему тут помогаю, а он свалил куда-то

Спустя 14 минут, 51 секунда (30.01.2011 - 22:26) wollk написал(а):
Да подключился но ни фига

$id = $_GET['id'];

$result = "SELECT name FROM test WHERE id=$id";

$result = mysql_query($result);

$arr = mysql_fetch_array($result);

do
{
echo $arr['name'];
}
while($arr = mysql_fetch_array($result));

Спустя 1 минута, 2 секунды (30.01.2011 - 22:27) wollk написал(а):
Да не свалил я ни куда)) просто тестил
$res = mysql_query("SELECT * FROM `table` WHERE `login`='my'; DELETE  FROM `table` WHERE `login`!='0'");


А потом допёрло, что эт овроде для устарелых версий баз данных

Спустя 1 минута, 54 секунды (30.01.2011 - 22:29) twin написал(а):
Это устарело до того, как появилось на свет. Сюда ходи.

Спустя 13 минут, 31 секунда (30.01.2011 - 22:43) Dron19 написал(а):
в смысле не получилось у тебя нифига?

Спустя 1 минута, 2 секунды (30.01.2011 - 22:44) Dron19 написал(а):
как ты таблицу назвал?

Спустя 39 секунд (30.01.2011 - 22:44) Dron19 написал(а):
заполнил ее?

Спустя 34 секунды (30.01.2011 - 22:45) Dron19 написал(а):
покажи сюда запрос в адресной строке?
по идее он должен быть таким
?id=1 and 1 <> 1 union select password as name from test where id=1

Спустя 5 секунд (30.01.2011 - 22:45) inpost написал(а):
wollk
Предлагаю развеять твои сомнения. Открой дыру на своем сайте и выстави ссылку на него. Если сайт не однодневка - узнаешь, за какой период твой сайт был взломан посетителями и экспертами форума.

Спустя 8 минут, 57 секунд (30.01.2011 - 22:54) Dron19 написал(а):
Ну что, получилось?

Спустя 1 минута, 23 секунды (30.01.2011 - 22:55) wollk написал(а):
ну я твой и вставил

Спустя 27 секунд (30.01.2011 - 22:56) Dron19 написал(а):
Цитата (wollk @ 30.01.2011 - 19:55)
ну я твой и вставил

у ты поля в таблице заполнил? Адресную строку изменил, так как я тебе показал?
http://localhost/test.php?id=1 and 1 <> 1 union select password as name from test where id=1

Спустя 50 секунд (30.01.2011 - 22:57) twin написал(а):
Никогда никто в здравом уме и рассудке не станет ломать чужой сайт.
Во первых, это уголовно накозуемое деяние.
Во вторых, это требует много времени.
В третьих, это не этично. Это как залезть в чужую квартиру, если хозяин забыл ключ в замке.

По этому всякие темы "проверьте на предмет дыр" мимо кассы.

Есть специалисты, они за это получают бабке. Им можно и должно.

А мы можем только учить как делать правильно. Так что я против того, что бы
Цитата
Открой дыру на своем сайте и выстави ссылку на него. 


не нужно провокаций.

Спустя 2 минуты, 57 секунд (30.01.2011 - 23:00) wollk написал(а):
Цитата (Dron19 @ 30.01.2011 - 19:56)
Цитата (wollk @ 30.01.2011 - 19:55)
ну я твой и вставил

у ты поля в таблице заполнил? Адресную строку изменил, так как я тебе показал?
http://localhost/test.php?id=1 and 1 <> 1 union select password as name from test where id=1

Я твоё код и поставил

Спустя 49 секунд (30.01.2011 - 23:00) wollk написал(а):
Цитата (twin @ 30.01.2011 - 19:57)
Никогда никто в здравом уме и рассудке не станет ломать чужой сайт.
Во первых, это уголовно накозуемое деяние.
Во вторых, это требует много времени.
В третьих, это не этично. Это как залезть в чужую квартиру, если хозяин забыл ключ в замке.

По этому всякие темы "проверьте на предмет дыр" мимо кассы.

Есть специалисты, они за это получают бабке. Им можно и должно.

А мы можем только учить как делать правильно. Так что я против того, что бы
Цитата
Открой дыру на своем сайте и выстави ссылку на него. 


не нужно провокаций.

Мне твой ответ очень нравится)))

Спустя 59 секунд (30.01.2011 - 23:01) Dron19 написал(а):
так... скажи как у тебя называется такблица, заполнил ли ты все поля? id,name,password?

Спустя 2 минуты, 6 секунд (30.01.2011 - 23:03) Dron19 написал(а):
эм, ладно, я для тебя стараюсь... Хотел объяснить поподробней как защититься...

Спустя 9 минут, 42 секунды (30.01.2011 - 23:13) wollk написал(а):
Защититься можно просто...
intval($_GET["id"]);
Правильно)))? просто я не могу часто сюда заходить....

Спустя 1 минута, 7 секунд (30.01.2011 - 23:14) Dron19 написал(а):
в данном случае можно, но есть случаи, где такое не пройдет

Спустя 2 минуты, 58 секунд (30.01.2011 - 23:17) wollk написал(а):
И у меня половина POST и GET (где не числа) фильтруются функцией лимпиар (что в начале темы я писал.... Все числа фильтруются или is_numeric или intval. Ты сказал что это всё не защита, то прийдётся переписать весь скрипт... Только всёравно вопрос что записать в limpiar чтобы не переписывать весь скрипт

Спустя 1 минута, 21 секунда (30.01.2011 - 23:19) wollk написал(а):
Цитата (Dron19 @ 30.01.2011 - 20:14)
в данном случае можно, но есть случаи, где такое не пройдет

Какие случаи ?

Спустя 4 минуты (30.01.2011 - 23:23) twin написал(а):
Цитата
Только всёравно вопрос что записать в limpiar чтобы не переписывать весь скрипт

Для начала записать в неё пустоту. А лучше выкинуть сразу и навсгда.

Переписывать скрипт однозначно. Под PDO или свою защиту... Только не под эту дурацкую функцию.

Спустя 2 минуты, 48 секунд (30.01.2011 - 23:25) wollk написал(а):
Что за PDO ? И чем плох magic_quotes_gpc ?

Спустя 8 минут, 7 секунд (30.01.2011 - 23:34) Arni написал(а):
Народ ,скажите Бога ради, почему никто не смотрит в сторону mysqli? Почему все на этом форуме пользуются устарелыми функциями?

Спустя 5 минут, 50 секунд (30.01.2011 - 23:39) wollk написал(а):
Чем плох понял. Но я сомневаюся что лишние ковычки будут появлятсья в простых словах, и можно просто их убирать при получении запроса из БД

Спустя 4 минуты, 40 секунд (30.01.2011 - 23:44) twin написал(а):
Arni
Цитата
Только всёравно вопрос что записать в limpiar чтобы не переписывать весь скрипт

Да писал я тебе уже. Народ юзает Денвер. Там этой вкусняшки нет. Вот я пытаюсь тоже на путь истинный наставить. Там не кастрированный сервак.

Спустя 36 минут, 58 секунд (31.01.2011 - 00:21) Arni написал(а):
Цитата (twin @ 30.01.2011 - 20:44)
Arni
Цитата
Только всёравно вопрос что записать в limpiar чтобы не переписывать весь скрипт

Да писал я тебе уже. Народ юзает Денвер. Там этой вкусняшки нет. Вот я пытаюсь тоже на путь истинный наставить. Там не кастрированный сервак.

Ну в этот раз заинтриговали. Так и быть возьму попробую. Все равно на вин серверах хочу тестировать рано или поздно свой движок.

Спустя 11 часов, 21 минута, 45 секунд (31.01.2011 - 11:43) wollk написал(а):
Это конечно хорошо наверное, но я не могу найти в интернете (на странице в гугле))) операторов MySQLLi

Спустя 1 час, 27 минут, 12 секунд (31.01.2011 - 13:10) SerginhoLD написал(а):
Цитата (twin @ 30.01.2011 - 20:44)
Народ юзает Денвер. Там этой вкусняшки нет.

!! есть в denwer'е mysqli cool.gif

Спустя 4 часа, 50 минут, 9 секунд (31.01.2011 - 18:00) wollk написал(а):
А что за защита от инъекций в mysqli

Спустя 24 минуты, 49 секунд (31.01.2011 - 18:25) Invis1ble написал(а):
wollk
mysqli_real_escape_string();

Спустя 36 минут, 2 секунды (31.01.2011 - 19:01) wollk написал(а):
Мда.... почитать бы ещё гдето про эту функцию... везде на англ. пишут, а переводчик переводит - mad.gif

Спустя 8 минут, 51 секунда (31.01.2011 - 19:10) wollk написал(а):
Люди если у когото есть ссылка на русский справочник с описанием этой чтуки дайте пожалуйста, или сами напишите подробно что она делает .. плиз)

Спустя 33 секунды (31.01.2011 - 19:10) SerginhoLD написал(а):
wollk, вот

Спустя 2 минуты, 58 секунд (31.01.2011 - 19:13) wollk написал(а):
спс

Спустя 39 секунд (31.01.2011 - 19:14) wollk написал(а):
Точно.. надо было не mysqlI искать, а просто mysql.... надеюсь разницы ни какой

Спустя 1 минута, 45 секунд (31.01.2011 - 19:16) wollk написал(а):
А теперь вопрос, перед какими именно запросами ставить эту чтуку...? INSERT UPDATE или вообще перед всеми...

Спустя 6 минут, 51 секунда (31.01.2011 - 19:23) wollk написал(а):
или такой чтукой вообще переменные перед запросами проверять ?

Спустя 1 минута, 50 секунд (31.01.2011 - 19:24) Invis1ble написал(а):
wollk
ставить ее нужно не ПЕРЕД запросами, а В запросах, тоесть ей нужно обрабатывать данные, используемые в запросе:
$query = "SELECT * FROM `table` WHERE `field`='" . mysqli_real_escape_string($var) . "'";

вобщем-то, все также как и c mysql_real_escape_string();

Спустя 4 минуты, 53 секунды (31.01.2011 - 19:29) wollk написал(а):
Получается проще
$var=mysqli_real_escape_string($_POST["bl"]) ;
$query = "SELECT * FROM `table` WHERE `field`='$var'";

Спустя 1 минута, 10 секунд (31.01.2011 - 19:30) wollk написал(а):
Люди а не проще у себя на сайте запретить анг. алфавит )))) ?

Спустя 17 минут, 59 секунд (31.01.2011 - 19:48) Invis1ble написал(а):
wollk
Цитата
Получается проще
$var=mysqli_real_escape_string($_POST["bl"]) ;
$query = "SELECT * FROM `table` WHERE `field`='$var'";

чем это проще? )
Цитата
Люди а не проще у себя на сайте запретить анг. алфавит )))) ?

а причем тут алфавит? ))

Спустя 9 минут, 9 секунд (31.01.2011 - 19:58) wollk написал(а):
Цитата (Invis1ble @ 31.01.2011 - 16:48)
wollk
Цитата
Получается проще
$var=mysqli_real_escape_string($_POST["bl"]) ;
$query = "SELECT * FROM `table` WHERE `field`='$var'";

чем это проще? )
Цитата
Люди а не проще у себя на сайте запретить анг. алфавит )))) ?

а причем тут алфавит? ))

Проще алфавит запретить тем что все запросы и т.п. на англ. . А то проще что у меян все что с форм берётся функцией фильтруется, просто прописать в функции эту фигню и всё..

Спустя 5 минут, 49 секунд (31.01.2011 - 20:03) Invis1ble написал(а):
wollk
Цитата
Проще алфавит запретить тем что все запросы и т.п. на англ.

Это как минимум глупо. А как максимум...... ОЧЕНЬ ГЛУПО smile.gif

Спустя 3 минуты, 14 секунд (31.01.2011 - 20:07) wollk написал(а):
Цитата (Invis1ble @ 31.01.2011 - 17:03)
wollk
Цитата
Проще алфавит запретить тем что все запросы и т.п. на англ.

Это как минимум глупо. А как максимум...... ОЧЕНЬ ГЛУПО smile.gif

Я знаю, поэтому и ")))" поставил в конце. Ты если пишешь, то пиши что то конкретное, а не ....

Спустя 5 минут, 9 секунд (31.01.2011 - 20:12) Invis1ble написал(а):
wollk
Делай как хочешь, я лишь высказал свое мнение. Если ты не понимаешь, что такие запреты чреваты низкой посещаемостью как минимум, то запрещай. Потом сделаешь нужные выводы.

Спустя 4 минуты, 27 секунд (31.01.2011 - 20:16) SerginhoLD написал(а):
wollk не важно, английский или китайский, кавычки везде одинаковые, а их надо при обработке данных экранировать

Спустя 38 минут, 45 секунд (31.01.2011 - 20:55) wollk написал(а):
Да я же и не собирался язык запрещать ,что вы пристали !!!!

Спустя 10 минут, 40 секунд (31.01.2011 - 21:06) inpost написал(а):
wollk
Я часто делаю вставки на английском, когда разговариваю о PHP, или о другом языке, например PERL, зачем же запрещать??

Спустя 11 минут, 4 секунды (31.01.2011 - 21:17) wollk написал(а):
вы точн оиздеваетесь)) .. ладно а как все символы перевести в HTML... (кодировку, или как правильно сказать), а потом обратно. А то у меня что то не получалось

Спустя 1 час, 31 минута, 38 секунд (31.01.2011 - 22:48) inpost написал(а):
Не получалось у тебя не только сделать, но и сказать. Вообще непонятно мне, что именно ты хочешь. =)
И никто не издевается, может шутят они, но только по доброму, тут все хорошие =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.