![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
kat_ru |
|
|||
![]() Другого не будет Профиль Группа: Участник Сообщений: 23 Регистрация: 16.1.2007 Где: Moscow City Репутация: нет Всего: нет |
Насколько актуальна функция ниже?
Критика, пожелания, что можно или нужно изменить - исправить? Если не сложно как? Заранее благодарен за ответ.
Это сообщение отредактировал(а) kat_ru - 4.3.2008, 15:50 |
|||
|
||||
A1ekcandr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 27.6.2007 Репутация: 1 Всего: 1 |
зачем столько strpos в этом случае сделть легче через регулярное выражение
|
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Согласен c A1ekcandr, проще через 1 регулярное выражение.
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Непонятно, зачем такой большой набор символов.
Вообще, было бы неплохо, если автор словами сформулировал задачу, которую он хочет решить. В таких вопросах всегда полезно это делать, поскольку толкование XSS уязвимости у всех может быть разным. |
|||
|
||||
kat_ru |
|
|||
![]() Другого не будет Профиль Группа: Участник Сообщений: 23 Регистрация: 16.1.2007 Где: Moscow City Репутация: нет Всего: нет |
Например так?
GeneralElectric Избавить адресную строку от ненужных символов... Хотя наверно проще и надежней сделать список только разрешенных символов. |
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
P.S. Что тут на форуме за злобный баг, слеши обратные расставляющий??? Это сообщение отредактировал(а) source777 - 5.3.2008, 00:32 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
kat_ru |
|
|||
![]() Другого не будет Профиль Группа: Участник Сообщений: 23 Регистрация: 16.1.2007 Где: Moscow City Репутация: нет Всего: нет |
У меня с регулярками туго... ((( Не понимаю и писец... Перечитывал уже раз 10 на php.net Если не сложно можете по символьно объяснить логику вот этого выражения: " |^[a-z 0-9\\.:_-/]+$|i " |
|||
|
||||
SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
| - открывающий ограничитель шаблона ^ - начало строки [ - начало символьного класса, допускающего: a-z - лат.буквы - пробел (не понимаю только, нафига он в урле — по-моему, он лишний) 0-9 - цифры (можно написать короче - \d) \\ - обратный слеш (заэкранирован, чтобы PHP не подумал, что это заэкранированная точка. Кстати, в урле обратный слеш, имхо, тоже не нужен) . : _ / - любой из этих символов - - вообще-то, между символами внутри квадратных скобок задает диапазон символов. Но в данном случае начало диапазона (_ - 0x5F) находится в кодовой таблице раньше его конца (/ - 0x2F), поэтому, судя по мануалу
] - конец символьного класса + - означает, что входящие в класс символы могут встречаться один и более раз $ - конец строки. | - закрывающий ограничитель шаблона i - модификатор, указывающий на независимость от регистра Все вместе означает, что строка должна от начала до конца состоять из ненулевого количества символов, перечисленных в классе, без учета регистра букв. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
kat_ru, общий смысл |^[a-z 0-9\\.:_-/]+$|i состоит в том, чтобы проверить, что URL состоит из латинских букв, цифр, пробелов, точек, значков подчёркивания, дефисов, двоеточий, прямых и обратных слешей. Ещё более мощным решением будет вырезать из URL все символы кроме вышеобозначенных, тогда сайт даже не заметит, что была попытка ввести какие-то иные символы... P.S. Поскольку я уже отчаялся добиться от этого форума вменяемой работы, то смотри вложение, надеюсь хотя бы его форум не испаганит... Код там 100%-рабочий вместе с большим комментарием... Это сообщение отредактировал(а) skyboy - 6.3.2008, 00:55 Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
Хрипа |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 11.12.2006 Репутация: -6 Всего: нет |
Я делаю так:
Если у вас уже готовый скрипт то интегрировать можно так:
--------------------
<Вырезана, как не соответствующая правилам форума > |
||||
|
|||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
А смысл в такой фильтрации на входе? Фильтровать нужно:
1. На этапе вставки в базу (от того, тчо может вызвать креш базы) 2. На выводе данных (от всего, чего мы не ждем в выводе) А то как-то сомнительна практическая ценность получается. 1. Как сохранить html (это нужно практически в каждом проекте)? 2. Вы расчитываете, что в базе у вас корректные данные, т.к. вы их туда вставили. Но вы забываете, что отдаете проект заказчику. И он может, например, импортировать данные в базу минуя ваши фильтры. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Согласен с Solenko. Просто фильтровать URL вот так - пытаться убить конкретных людей с помощью выброса атомной бомбы на целую страну. Не проще ли отфильтровать те параметры, которые надо отфильтровать а не пускать все под общую гребенку? К тому же если захотим вдруг пропустить фильтруемые символы, придется отключать эту фильтровалку и писать отдельно под каждый запрос (что и надо было делать).
Это сообщение отредактировал(а) flashaa - 6.3.2008, 11:46 |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
В квадратных скобках точку экранировать не надо. Сорри, прошу доказательств. Желательно не через браузер (который любезно сам заменяет пробелы на %20 при сабмите), а в виде скриншота сессии телнета. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
kat_ru |
|
||||||
![]() Другого не будет Профиль Группа: Участник Сообщений: 23 Регистрация: 16.1.2007 Где: Moscow City Репутация: нет Всего: нет |
предположим на страничке есть <div id="main"></div> в случае если зайти на страничку по такой ссылке: http://host/?a=<script>getE...).innerHTML=XSS Here!</script> то это и будет XSS.
Для POST данных нужен немного другой подход... ибо каждая форма имеет свой обработчик. А например mysql_escape_string (кстати: mysql_real_escape_string) не сработает и даже выведет ошибку в случае если нет активного соединения с БД...
строка "header("location: ".$NQString."", true, 301);" 301 Статус заголовка HTTP скажет поисковикам например, что страница переехала окончательно и накопленный рейтинг надо бы перенести на $NQString. Ведь если на множество форумов распространят ссылку http://host/?a=<script>getE...L="XSS Here!";</script> то это цитируемость страницы... которая переместиться на http://host/? Поправьте если не прав... Спасибо всем! Думаю вопрос решен... |
||||||
|
|||||||
SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Да ну? Яваскрипт из адресной строки может выполниться в одном случае - по "ссылке" с "протоколом" javascript:. Другое дело, если в коде страницы где-то вызывается echo $_GET['a'] без проверки (например, перед результатами поиска отображается сама поисковая фраза) - тогда да, возможностей "творчески переосмыслить" эту страницу масса ![]()
Правильно, это ее документированное поведение. Потому что зачем она нужна, если не собираетесь ничего записывать? А если собираетесь - то почему не готовы? ;) -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |