Вот норм защита ?
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, вообще перед выбором данных в бд напиши так
И всегда переменную с помощью которой ты вытаскиваешь значения закавычивай
а это, вообще не защита от 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 написал(а):
А почему то что я нашёл то не защита ?... Я новичёк, и поэтому то что ты написал мне не понятно
((((....Ну ладно... посмотрим ещё на ответы

Спустя 1 минута, 19 секунд (30.01.2011 - 21:56) twin написал(а):
Для начала тут почитай. Дальше сам думай.
Спустя 1 минута, 4 секунды (30.01.2011 - 21:57) Dron19 написал(а):
Создай таблицу user, с полями id, name и password, далее,
напиши такой код
То есть обычный код и без защиты, даже без кавычек
Зайди на эту страницу и напиши к примеру вот так в адресной строке
http://localhost/test.php?id=1 and 1 <> 1 union select password as name from user where id=1
и посмотри что выведется :)
напиши такой код
<?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 написал(а):
попробуй, посмотри в чем прикол будет
Думаю тебя это заинтересует

Думаю тебя это заинтересует
Спустя 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
по идее он должен быть таким
?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) | ||
у ты поля в таблице заполнил? Адресную строку изменил, так как я тебе показал? 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
Да писал я тебе уже. Народ юзает Денвер. Там этой вкусняшки нет. Вот я пытаюсь тоже на путь истинный наставить. Там не кастрированный сервак. |
Ну в этот раз заинтриговали. Так и быть возьму попробую. Все равно на вин серверах хочу тестировать рано или поздно свой движок.
Спустя 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

Спустя 4 часа, 50 минут, 9 секунд (31.01.2011 - 18:00) wollk написал(а):
А что за защита от инъекций в mysqli
Спустя 24 минуты, 49 секунд (31.01.2011 - 18:25) Invis1ble написал(а):
wollk
mysqli_real_escape_string();
mysqli_real_escape_string();
Спустя 36 минут, 2 секунды (31.01.2011 - 19:01) wollk написал(а):
Мда.... почитать бы ещё гдето про эту функцию... везде на англ. пишут, а переводчик переводит -

Спустя 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
ставить ее нужно не ПЕРЕД запросами, а В запросах, тоесть ей нужно обрабатывать данные, используемые в запросе:
вобщем-то, все также как и c mysql_real_escape_string();
ставить ее нужно не ПЕРЕД запросами, а В запросах, тоесть ей нужно обрабатывать данные, используемые в запросе:
$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'";
$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
чем это проще? )
а причем тут алфавит? )) |
Проще алфавит запретить тем что все запросы и т.п. на англ. . А то проще что у меян все что с форм берётся функцией фильтруется, просто прописать в функции эту фигню и всё..
Спустя 5 минут, 49 секунд (31.01.2011 - 20:03) Invis1ble написал(а):
wollk
Цитата |
Проще алфавит запретить тем что все запросы и т.п. на англ. |
Это как минимум глупо. А как максимум...... ОЧЕНЬ ГЛУПО

Спустя 3 минуты, 14 секунд (31.01.2011 - 20:07) wollk написал(а):
Цитата (Invis1ble @ 31.01.2011 - 17:03) | ||
wollk
Это как минимум глупо. А как максимум...... ОЧЕНЬ ГЛУПО ![]() |
Я знаю, поэтому и ")))" поставил в конце. Ты если пишешь, то пиши что то конкретное, а не ....
Спустя 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, зачем же запрещать??
Я часто делаю вставки на английском, когда разговариваю о PHP, или о другом языке, например PERL, зачем же запрещать??
Спустя 11 минут, 4 секунды (31.01.2011 - 21:17) wollk написал(а):
вы точн оиздеваетесь)) .. ладно а как все символы перевести в HTML... (кодировку, или как правильно сказать), а потом обратно. А то у меня что то не получалось
Спустя 1 час, 31 минута, 38 секунд (31.01.2011 - 22:48) inpost написал(а):
Не получалось у тебя не только сделать, но и сказать. Вообще непонятно мне, что именно ты хочешь. =)
И никто не издевается, может шутят они, но только по доброму, тут все хорошие =)
И никто не издевается, может шутят они, но только по доброму, тут все хорошие =)