![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Всем привет!
Написал небольшой код для работы с $_GET и $_POST для увеличения безопасности в моих скриптах. Что вы думаете по этому поводу?
Теперь обращаться нужно так:
По-моему очень удобно и красиво. |
||||
|
|||||
| Severyanin |
|
|||
![]() Исследователь ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 31.7.2007 Где: Россия, Омск Репутация: нет Всего: 9 |
Можно было бы еще задать в качестве параметра контсруктора число-ограничитель на длину строки, чтобы избежать DOS. А еще неплохо было бы проверять переменные на наличие запрещенных символов для избежания инъекций. Помимо htmlspecialchars
-------------------- "Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл "Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Severyanin, ну да, можно сделать ещё какие-нибудь обработчики в Conversion.
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
htmlspecialchars, как и "запрещенные символоы для избежания инъекций", никакого отношения к обработке $_GET и $_POST не имеют.
Все эти велосипеды на паровом ходу надо сначала обкатывать в реальной эксплуатации. На нескольких сайтах, несколько месяцев. И только потом представлять широкой публике. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Ипатьев, я ведь не предлагаю всем подряд использовать мой код. Я только просил высказать мнения по его поводу.
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
А я ничего не писал о предложении этот код использовать другим.
Я написал, что должны были сделать вы сами. При отсутствии достаточного опыта, программист просто не в состоянии написать хорошую вещь с нуля. И поэтому практическая проверка теоретических представлений всегда необходима. Мнение, впрочем, я высказал тоже. Это сообщение отредактировал(а) Ипатьев - 9.2.2010, 15:40 |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Ипатьев, вы меня видимо не поняли.
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Это невозможно. И не нужно. А "не хочу" - не аргумент.
Но как минимум убрать из метода text функцию htmlspecialchars А заодно сформулировать критерии безопасности, для следования которым писалась эта функция. Сам подход правильный. Нужно только учитывать реальную жизнь. В которой иногда приходится пропускать HTML теги в скрипт как есть. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Мне тоже кажется что это правильно, явно указывать у всех получаемых параметров их тип.
Я бы для этого использовал обратную функцию или что-то такое: Get('page')->Html(); |
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
А можно ли поинтересоватся, какая польза от этого скрипта?
Он предоставляет другой синтаксис для обращения к глобальным массивам? Или смысл в том, что можно строго типизировать получаемые данные? Это сообщение отредактировал(а) NLspieler - 9.2.2010, 17:49 |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Здесь уже был длинный спор между перестраховщиками, которая боялись, что не уследят за выводом, и педантами, которые (абсолютно правильно) полагают, что функция htmlspecialchars нужна при выводе данных, а при вводе совсем не нужна. Убедить, впрочем, сторонам друг друга не удалось, поэтому не будем снова повторять одно и то же. NLspieler, корни правильности данного подхода лежат в необходимости иницилизировать используемые переменные. что данный класс и делает. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
||||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
-------------------- Amazing |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
MoLeX, ну да. У них по своему сделано.
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
и сделано красиво
-------------------- Amazing |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Обосную, чтобы не обвинили в чем-то плохом. > Бесполезное Не относится к решаемой задаче > нагромождение ошибок Порча данных неуместным эскейпингом, не решает задачу |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Почему? По-моему в сочетании плэйсхолдерами обеспечивает вполне безопасную работу скрипта? Этот эскейпинг относится только к Text, в тексте не должно быть html-а. (Как уже сказали выше, я из тех, кто перестраховывается, я считаю что данные сначала нужно обезопасить) Добавлено через 14 минут и 11 секунд Возможно дело вкуса. По мне так мой вариант самый лучший Get('value')->Int(); Это сообщение отредактировал(а) Elfet - 10.2.2010, 23:48 |
|||
|
||||
| nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
1) Не обеспечит полноту картины. 2) Портит данные 3) Ничем не лучше ручного варианта из-за пункта 1, он хуже по пункту 2.
1) Тебе так кажется(крещенный) 2) Оно испортит(просьба называть вещи своими именами) не только html.
|
||||||
|
|||||||
| MoLeX |
|
||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
относиться к а не к коду автора топика. большие плюсы у CI в том что данные можно получить как есть:
так и очищенные от всякого мусора
-------------------- Amazing |
||||
|
|||||
| sTa1kEr |
|
||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Выглядит действительно красиво. Однако реализация... зачем при каждом запросе параметра создавать и уничтожать по 2 объекта? Какой смысл вообще создавать объект Request на каждый параметр? Кроме того, благодаря этому, что бы добавить фильтр, придется править скрипт в 3х местах. В общем, это наглядный пример, как можно использовать объекты без применения ООП. |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |