Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какие символы опасны в sql запросах, Защита от sql injection 
:(
    Опции темы
bars80080
Дата 11.5.2010, 19:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(LeoK @  11.5.2010,  16:26 Найти цитируемый пост)
ну в вашем случае я бы еще исключил $_REQUEST в пользу $_GET $_POST 

я написал самый простой вариант. просто в $_REQUEST сводятся все остальные массивы
PM MAIL WWW   Вверх
Muerto
Дата 10.7.2010, 11:42 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



mysql_real_escape_string супер не надежный
*Sorry for english, not at home...
if you have a website where you echo the $data from you fetched from your DB,
you will have a problem!
For example:
try to send something like 
Код

<script>alert("fasdfadf");</script>

you will do 
Код

INSERT INTO tb_bla (txt) VALUES ('.mysql_real_escape_string($_POST["data"]).');


You won't get any errors, just and alert message if you dare to echo it
Код

<?select * from ... fetch_array echo $fetched["txt"];?>

result: popup message = alert...
cause of this you need a filters, you cant work only with mysql_real_escape_string, I personaly don tsee any point in this function...
maybe to filter key words...

Это сообщение отредактировал(а) Muerto - 10.7.2010, 11:43


--------------------
user posted image
PM MAIL   Вверх
enoff
Дата 10.7.2010, 11:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: нет
Всего: 13



Цитата(Muerto @  10.7.2010,  11:42 Найти цитируемый пост)
mysql_real_escape_string супер не надежный

и в каком месте он ненадежный?
Добавление в базу данных проходит без ошибок, а вывод в браузер уже другая история - htmlspecialchars()
PM MAIL ICQ Skype GTalk   Вверх
Muerto
Дата 10.7.2010, 13:39 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



и ты допустим в скрипте блога будеш каждый раз фильтровать by htmlspecialchars?
если вы поиска боитесь лучше запрос поиска пропустите через ту же функцию, имхо так умней
а intval / (int) как фильтр чисел, оч плох what if my passport number is 4743756475647?


--------------------
user posted image
PM MAIL   Вверх
enoff
Дата 10.7.2010, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: нет
Всего: 13



Цитата(Muerto @  10.7.2010,  13:39 Найти цитируемый пост)
и ты допустим в скрипте блога будеш каждый раз фильтровать by htmlspecialchars?

да буду.
потому что в базе будет храниться именно то, что ввел пользователь.
Потом может понадобиться экспорт бд, перемещение на другой движок и т.д.
применять htmlspecialchars перед выводом - общепринято, так умнее, и не имхо.

Цитата(Muerto @  10.7.2010,  13:39 Найти цитируемый пост)
what if my passport number is 4743756475647?

вы где живете?

ctype_digit(), регулярные выражения не помогут?
PM MAIL ICQ Skype GTalk   Вверх
bars80080
Дата 10.7.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(Muerto @  10.7.2010,  13:39 Найти цитируемый пост)
и ты допустим в скрипте блога будеш каждый раз фильтровать by htmlspecialchars?


Цитата(enoff @  10.7.2010,  13:51 Найти цитируемый пост)
да буду.

или, если мне важна скорость, но не имеет значения объём БД, буду хранить два варианта. оригинал для правок и преобразованную версию для отдачи пользователю


Цитата(Muerto @  10.7.2010,  13:39 Найти цитируемый пост)
если вы поиска боитесь лучше запрос поиска пропустите через ту же функцию, имхо так умней

слово "умней" не очень подходит для совершения делов без понимания чего ты хочешь добиться и чего делают те или иные функции


Цитата(Muerto @  10.7.2010,  13:39 Найти цитируемый пост)
а intval / (int) как фильтр чисел, оч плох what if my passport number is 4743756475647? 

intval хорош, если ты хочешь привести число к формату int(11), оно для этого и существует. если ты хочешь привести число к другому формату, то есть другие функции
PM MAIL WWW   Вверх
skyboy
Дата 10.7.2010, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



если настолько важна скорость, что htmlspecialchars стало узким местом, то уже давно должна быть реализована кеширование сформированных кусков страницы целиком. ибо на фоне работы с базой данных, файлами, сетью, htmlspecialchars - совсем незаметное проишествие.
PM MAIL   Вверх
Muerto
Дата 11.7.2010, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



я тестировал mysql_real_escape_string и уже писал чем закончилось дело...
но все же -
как его стоит использовать?
Код

select * from tb_users where username='mysql_real_escape_string ($_POST["uname"])'
      ?
а почему нет аналога mysql_real_escape_string  но просто функция? которую я смогу применять без открытого подключения?
и ещё:
предположим я хочу хранить адреса!
http://mysql.com/?r=3&b=6&v=7
after htmlspecialchars 
http://mysql.com/?r=3&amp;b=6&amp;v=7
и такое браузер не поймет если перейдем на ссылку!
а если не фильтровать то нам хсс инджекшен запихнут!


--------------------
user posted image
PM MAIL   Вверх
bars80080
Дата 11.7.2010, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(Muerto @  11.7.2010,  00:09 Найти цитируемый пост)
тестировал mysql_real_escape_string и уже писал чем закончилось дело...

как-то не так использовал.

Код

$field = mysql_real_escape_string($_POST['field']);
$sql = 'select * from tb_users where username="'.$field.'"';



Цитата(Muerto @  11.7.2010,  00:09 Найти цитируемый пост)
а почему нет аналога mysql_real_escape_string  но просто функция? которую я смогу применять без открытого подключения?

а смысл её применять, если ты не собираешься вставлять данные в БД

это кстати ключевой вопрос, который обязательно нужно уяснить:
зачем что-то делать с текстом, если ты не собираешься его никак использовать?

если ты его собираешься как-то использовать, то нужно определить соответствующие средства для безопасности. а не все подряд без разбору

Цитата(Muerto @  11.7.2010,  00:09 Найти цитируемый пост)
предположим я хочу хранить адреса!
http://mysql.com/?r=3&b=6&v=7
after htmlspecialchars 
http://mysql.com/?r=3&amp;b=6&amp;v=7
и такое браузер не поймет если перейдем на ссылку!
а если не фильтровать то нам хсс инджекшен запихнут! 

а пример с xss можно?
PM MAIL WWW   Вверх
Muerto
Дата 11.7.2010, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



а пример с xss можно? 
вот так можно наращивать себе тиц:
есть сайт к примеру
http://blabla.ru
там есть поиск
http://blabla.ru/search.php?q=

q - this is our query for the search...

so now - >

http://blabla.ru/search.php?q="<a href='http://mysql.com/?r=3&b=6&v=7'>mysite</a>
и в определенных условиях получаем 

иногда то цтхо искали показывается в форме поиска сверху...
и выходит что будет форма пустой и слева ссылка на ваш сайт, теперь осталось на свой сайт поместить ссылку:
http://blabla.ru/search.php?q="<a href='http://mysql.com/?r=3&b=6&v=7'>mysite</a>

и получаем от того сайта линк бэк...

 у меня дома даже где то список таких сайтов был... спецом выискивал...


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 11.7.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



сначала "хранишь адреса"
Цитата(Muerto @  10.7.2010,  23:09 Найти цитируемый пост)
предположим я хочу хранить адреса!
http://mysql.com/?r=3&b=6&v=7
after htmlspecialchars 
http://mysql.com/?r=3&amp;b=6&amp;v=7

потом вдруг речь начинает идти о строке поиска:
Цитата(Muerto @  11.7.2010,  01:18 Найти цитируемый пост)
иногда то цтхо искали показывается в форме поиска сверху...
и выходит что будет форма пустой и слева ссылка на ваш сайт, теперь осталось на свой сайт поместить ссылку:

чем в таком случае "мешает" htmlspecialchars - непонятно. после будет выведен как раз просто текст 
"<a href='http://mysql.com/?r=3&b=6&v=7'>mysite</a>
а вообще, браузер вполне нормально работает с адресами, в которых вместо "&" находится "&amp;"
более того, на структуру типа 
Код

<a href="http://site.com?a=b&c=d">link</a>

ругается валидатор, потому что 
Цитата

general entity "c" not defined and no default entity

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.