Реклама на сайте Advertise with us

Работа с базой и безопасность

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 30/08/10 в 18:58       Ответить с цитатойцитата 

Суть: юзер на сайте вводит информацию, она потом в php ловится в строковую переменную, и далее создаётся запрос к базе mysql, добавляется то что юзер ввёл (мыло, возраст). Потом этот запрос выполняется.
Чтобы любопытный человек не мог ввести что-то своё, чтобы дополнительные его запросы к базе не начали выполняться, как тут предохраняться?

Код:
$query = "INSERT INTO $table (stolb1, stolb2) VALUES('$perem1', '$perem2')";
$result = MYSQL_QUERY($query);


$perem1 и $perem2 принимаются через POST из формы.
Как-то нужно проверять что пришло в переменных $perem1 и $perem2, чтобы было безопасное добавление в базу?

Отличные серверы от SGManaged!

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 30/08/10 в 19:41       Ответить с цитатойцитата 

ну проверь коли так хочешь icon_smile.gif
а так вапще принимай через пост все и фильтруй.

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

-1
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 30/08/10 в 19:52       Ответить с цитатойцитата 

Если бы я чётко знал как и от чего фильтровать, то этого топика бы не было.

Отличные серверы от SGManaged!

0
 

Гугль - хуйло! ла-ла-ла-ла-ла

С нами с 22.02.03
Сообщения: 1378
Рейтинг: 1478

Ссылка на сообщениеДобавлено: 30/08/10 в 20:54       Ответить с цитатойцитата 

я не спец, но отсекаются спец символы обычно.
у меня в одном скрипте это делает строка
Код: [развернуть]

либо просто пропускать только набор символов которые используются, типа буквы, цифры, точка запятая и т.д., и @ - для мыла.
любому прогеру дело на 5 минут.

Рекламная сетка тут

5
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 31/08/10 в 10:05       Ответить с цитатойцитата 

http://www.w3schools.com/php/func_mysql_real_escape_string.asp

посмотри, как это делают известные фреймворки

5
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 31/08/10 в 11:22       Ответить с цитатойцитата 

обычно фильтруют
Код: [развернуть]

А вообще лучше четко прописать что мжет вводить юзер , если это поиск
то это буквы цифры пробел тире и подчеркивание. Больше им не надо в поиске

5
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 31/08/10 в 15:45       Ответить с цитатойцитата 

Вообще самый правильный и железный способ - это использовать параметризованные запросы. Если это mysql + php - то mysqli-интерфейс, там есть mysqli_stmt::prepare и прочие спизженные из нормальных языков типа Java+JDBC вещи.

5
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 31/08/10 в 17:42       Ответить с цитатойцитата 

leroy_17 писал:
А вообще лучше четко прописать что мжет вводить юзер , если это поиск
то это буквы цифры пробел тире и подчеркивание. Больше им не надо в поиске

Логично, а как это сделать? (если на стороне сервера)
То есть не перечислять что запрещено в preg_replace а наоборот, чтобы буквы, цифры, пробел, подчёркивание и тире пропускались.

Хотя суть одна, всё и так работает.
Всем спасибо! smail54.gif

Отличные серверы от SGManaged!

0
 



С нами с 16.07.06
Сообщения: 886
Рейтинг: 892

Ссылка на сообщениеДобавлено: 31/08/10 в 17:45       Ответить с цитатойцитата 

Можно заюзать php библиотеку filter.so

http://devzone.zend.com/article/1113
http://nl.php.net/manual/en/filter.filters.sanitize.php
http://nl.php.net/manual/en/ref.filter.php

Примеры:
http://nl.php.net/manual/en/filter.examples.validation.php
http://nl.php.net/manual/en/filter.examples.sanitization.php


Для себя юзаю потыренные из wordpress'a ф-ции, фильтрация работает например так:
Код:

<?php
add_filter('verify_text', 'strip_tags');
add_filter('verify_text', 'encoding_auto_convert');
add_filter('verify_text', 'trim');
add_filter('verify_text', 'mysql_real_escape_string');

$new_data = apply_filters('verify_text', $old_data)
?>

8
 



С нами с 01.02.07
Сообщения: 231
Рейтинг: 294

Ссылка на сообщениеДобавлено: 31/08/10 в 20:51       Ответить с цитатойцитата 

Dr.Syshalt писал:
Вообще самый правильный и железный способ - это использовать параметризованные запросы. Если это mysql + php - то mysqli-интерфейс, там есть mysqli_stmt::prepare и прочие спизженные из нормальных языков типа Java+JDBC вещи.

Верно, а если ещё и кешировать результат prepare() то можно секономить cpu базы который тратится на парсинг запроса и построение плана выполнения.

5
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 31/08/10 в 21:19       Ответить с цитатойцитата 

Ух, много букв.. буду изучать.

А что думаете об этом?
Код:
$userinfo = mysql_real_escape_string($userinfo);

Пишут, что ставится после коннекта к базе, и должно нормально отрабатывать инсерт и др. запросы, используя принятую инфу. icon_rolleyes.gif

Отличные серверы от SGManaged!

0
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 31/08/10 в 21:20       Ответить с цитатойцитата 

arma: у wp красивые строчки.. хороший ход. smail54.gif

Отличные серверы от SGManaged!

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 31/08/10 в 23:03       Ответить с цитатойцитата 

goodlover писал:

А что думаете об этом?
Код:
$userinfo = mysql_real_escape_string($userinfo);



Жить будет - способ дедовский, но работает.

5
 



С нами с 16.10.09
Сообщения: 343
Рейтинг: 419

Ссылка на сообщениеДобавлено: 31/08/10 в 23:48       Ответить с цитатойцитата 

+1 к mysql_real_escape_string, и незачем огород городить.

5
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 01/09/10 в 10:56       Ответить с цитатойцитата 



проблема в том что эта функа не все убирает, например если извернуться то можно закоментировать код и дописать другой запрос. Раньше в mysql проходили запросы типа chr(39) или написанные 16-ти ричным кодом символы . Т.е. кавычку можно написать не только как " ' ". На 5-ке mysql не пробовал так что точно не скажу на 4-ке работал такой метод взлома.

5
 



С нами с 15.04.08
Сообщения: 43
Рейтинг: 33

Ссылка на сообщениеДобавлено: 01/09/10 в 18:22       Ответить с цитатойцитата 

либо

Код:
mysql_query("SELECT * FROM items WHERE id = '".mysql_real_escape_string($_POST['id'])."'");


важный момент тут это обрамление кавычками ('), так как если этого не сделать, то возможно, что поломают даже с mysql_real_escape_string.

или фильтровать переменные, проверять номер это или строка из определенных символов и тд.

5
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 01/09/10 в 19:16       Ответить с цитатойцитата 

Noobus Boobus писал:
+1 к mysql_real_escape_string, и незачем огород городить.

+1, если пофиг на валидность данных и задача только не дать базу коцнуть.
как вариант еще использовать mysqli + "плейсхолдеры" (но это на любителя, имхо могли бы упрощенную версию для популяризации сделать)

5
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 01/09/10 в 19:40       Ответить с цитатойцитата 

Значит останавливаюсь на mysql_real_escape_string и кавычках.
Всегда их ставлю почему-то, и похоже что не зря. icon_rolleyes.gif
Всех заплюсовал. smail54.gif

Отличные серверы от SGManaged!

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »