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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита при постраничном выводе 
:(
    Опции темы
GrafF812
Дата 8.7.2010, 20:40 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте, в инете очень моного статей касаемых реализации постраничного вывода. Все они основаны на том, чтобы при переходе на новую страницу, передавать через GET ее номер. например:
Код

/*Проверяем поступил ли запрос на переключение страниц*/
                if(empty($_GET['page']) || $_GET['page'] <=0) $page=1;
                else $page=(int)$_GET['page'];
....
/*Определяем номер выводимой новости в базе*/
                $start_pos=($page-1)*$per_page;

/*Составляем SQL запрос на выборку новостей из таблицы news*/
                $res = mysql_query("SELECT * FROM news LIMIT $start_pos,$per_page");

и никто не пишет, что это не безопасно, поскольку в строке браузера можно дописать что-то типа DELETE FROM users.
Подскажите как сделать постраничный вывод безопасным? 
PM MAIL   Вверх
patap
Дата 8.7.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



чего ты так переживаешь?)
все у тебя тут нормально, в 3-й строке идет обработка входных данных. Если там будет какая-то строка, то операция преобразования типа (int) вернет 0

даже если опустить все проверки,то выржение
Код

$start_pos=($page-1)*$per_page;


вернет тип int, даже в том случае если в $_GET['page'] будет строка


Это сообщение отредактировал(а) patap - 8.7.2010, 20:56


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
GrafF812
Дата 8.7.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



patap, т.е это абсолютно безопасно? так вообще реально делают постраничную навигацию? я видел на некоторых сайтах, что когда переходишь на следующую страницу, то в браузере видно что параметр через GET не передается, а просто переходишь на html страницу.
PM MAIL   Вверх
Vasay
Дата 8.7.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 73



Цитата

то в браузере видно что параметр через GET не передается


Ща модно Ajax-ом странички листать. Вот только это не есть хорошо с точки зрения SEO, да и в закладку такую страничку не добавишь. 




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
GrafF812
Дата 8.7.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а можно ли как-нибудь подсунуть sql-инъекцию в мой постраничный вывод?
PM MAIL   Вверх
Vasay
Дата 8.7.2010, 22:53 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 73



GrafF812, 

для защиты от инъекций существют
mysql_real_escape_string
mysqli::prepare
PDO::prepare



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
CruorVult
Дата 8.7.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Цитата(Vasay @  8.7.2010,  21:17 Найти цитируемый пост)
да и в закладку такую страничку не добавишь

с чего бы это?
а что мешает выполнять Ajax запросы из location.hash ?
яркий тому пример google: https://mail.google.com/mail/#inbox



PM MAIL Skype   Вверх
Vasay
Дата 9.7.2010, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 73



Цитата(CruorVult @  8.7.2010,  23:56 Найти цитируемый пост)

с чего бы это?
а что мешает выполнять Ajax запросы из location.hash ?
яркий тому пример google: https://mail.google.com/mail/#inbox



Мешает? Отсутствие такого функционал в ajax компонентах существующих фреймворков smile (за все, конечно, не отвечаю)

Работая с Ajax ручками можно добиться даже совместимости с SEO. Вот только универсальность подобного решения будет не на высоте. Да и трудозатратно получится.


Это сообщение отредактировал(а) Vasay - 9.7.2010, 01:26


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
CruorVult
Дата 9.7.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Цитата(Vasay @  9.7.2010,  01:22 Найти цитируемый пост)
Мешает? Отсутствие такого функционал в ajax компонентах существующих фреймворков  (за все, конечно, не отвечаю)

причем сдесь функционал фреймворков. я лично у себя запускаю setInterval-ом функцию которая проверяет локейшн, если он изменился, то выполняется аякс запрос, с параментрами из локейшена, любым удобным способом, с фреймворками или без. а все ссылки, баттоны и т.д.  просто меняют location.hash. 
PM MAIL Skype   Вверх
Vasay
Дата 9.7.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 73



Цитата(CruorVult @  9.7.2010,  09:24 Найти цитируемый пост)
причем сдесь функционал фреймворков



При том,  что редко кто  ручками что-то делает. Берут JS фреймворк, биндят данные с ajax компонентом и все. 

И если Ajax компонент - таблица, то кнопочки пагинации, сортировки - генерятся фреймворком и никакой смены url при клике по этим кнопочкам не происходит.  

Раз уж упомянули gMail - взгляните как все в GWT сделано. Js код разработчик там вообще не пишет.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
CruorVult
Дата 9.7.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Цитата(Vasay @  9.7.2010,  11:16 Найти цитируемый пост)
взгляните как все в GWT сделано. Js код разработчик там вообще не пишет

я таким кощунством не занимаюсь, всё ручками. а такого рода фреймворки довольно нагрузочные. темболее ели разрабатывается cms.
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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