![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Необходимо реализовать сортировку БД, через get данные. Так же нужно учитывать безопастность, тем самым обрубив возможность для SQL Injections. Вот мой код:
URL domen.com/index.php?m=staff&sort=asc&field=nick - все работает. URL domen.com/index.php?m=staff&sort=asc&field=nick' - выводит Ошибка подключения к БД. Но, если я не ошибаюсь, функция mysql_real_escape_string должна обрубать все недозволенные символы?! |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 3 Всего: 36 |
Aliance, mysql_real_escape_string() не обрубает символы - она их экранирует.
Т.е. здесь сортировка пойдет все равно nick'. Будет тоже самое, что написать: domen.com/index.php?m=staff&sort=XXX&field=kakayato_laga т.е. ничего не будет. |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 3 Всего: 22 |
Aliance,
и тайное станет явным |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
вот этого как раз делать нельзя, иначе злоумышленник получит информацию. так в целом мой код правильный, injection не пройдет? |
|||
|
||||
| vasac |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 3 Всего: 36 |
Так не на нормальном же сайте делать, а у себя при разработке. А что делает mysql_real_escape_string() с различными символами можно узнать достаточно просто:
|
||||
|
|||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Я бы не стал передавать открыто поля таблицы. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 2 Всего: 55 |
Aliance,
mysql_escape_string предназначена не для того. У тебя неправильный подход. сделай лучше что то типо того:
и уже ссылки типа: script.php?orderby=1 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
ИМХО это извращение
Вот что получилось:
Добавлено @ 23:00 а чего тут такого? поле id есть в 90% таблиц, либо его вариации |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Да в общем-то ничего, это конечно дело твое, можешь и кода чуть-чуть выложить на страничку ;) ИМХО, это по-моему слишком громаздко, я бы на твоем месте сделал бы следующим образом:
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 3 Всего: 36 |
Конкретно в данном примере м.б. и ничего особенного. Только SQL-инъекции, с которыми вы так усиленно боретесь, происходят именно от того, что в запрос вставляются данные непосредственно полученные от пользователя. |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Солидарен -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| jsse |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 1.5.2006 Где: Кривой Рог Репутация: нет Всего: 2 |
Правильный подход к решению у -=Ustas=- с помощью массива,
тогда не возникнет проблемы с неправильным названием поля, но если требуется удалить ненужные символы можно поступить так:
т.е. оставить только те символы, которые будут присутствовать в названии поля таблицы. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
jsse, не вижу в этом необходимости - данные, передаваемые в адресе строки - числа. Функции intval() должно хватить
vasac, я решал задачу не в целом, а под данный конкретный пример -=Ustas=-, мне нужно делать и desc и asc сортировку. Тогда уж нужно твой вариант переписать так, чтобы была матрица?! |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Хм... зачем еще матрица, по аналогии с полями:
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
а если $_GET['order'] будет установлено в ghdghdt какую-нибудь? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |