|
|
|
| Добрый день.
У меня в PHP скрипте с помощью регулярного выражения осуществляется проверка _GET и _POST _SESSION массивов.
В них разрешены только буквы и цифры. Массив _SERVER нигде не использую. Использую это как защита скрипта от взлома. Мне вот грозятся данную защиту обойти... Реально ли это? | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 16:18)
| | 1. Приведи пример своего regexp'а.
2. Нужно не "разрешать только буквы и цифры", а правильно обрабатывать входящие данные. Проверка нужна не для того, чтобы сводить с ума обычного пользователя, а препятствовать неправильной работе скрипта. Любой пользователь может попытаться отправить безобидный текст (текст вообще другим быть и не может), который будет расценен твоим скриптом, как "хакерская атака".
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Atheist
(04.04.2008 в 16:40)
| | [^A-Z,a-z,0-9,_,,,--,.,!,?,(,),:,й,ц,у,к,е,н,г,ш,щ,з,х,ъ,ф,ы,в,а,п,р,о,л,д,ж,э,я,ч,с,м,и,т,ь,б,ю,Й,Ц,У,К,Е,Н,Г,Ш,Щ,З,Х,Ъ,Ф,Ы,В,А,П,Р,О,Л,Д,Ж,Э,Я,Ч,С,М,И,Т,Ь,Б,Ю, ,#,@,;]
Да уже как год использую, никто не жаловался... Регистраций на портале 30000, а онлайн около 400 :) Так что нормально...
Зато безопасно 8-) | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 18:28)
| | й,ц,у,к,е,н,г,ш,щ,з,х,ъ,ф,ы,в,а,п,р,о,л,д,ж,э,я,ч,с,м,и,т,ь,б,ю,Й,Ц,У,К,Е,Н,Г,Ш,Щ,З,Х,Ъ,Ф,Ы,В,А,П,Р,О,Л,Д,Ж,Э,Я,Ч,С,М,И,Т,Ь,Б,Ю,
мда..
не проще написать а-я ?
и зачем вам столько запятых?
чтобы 100% запятую обнаружить в тексте? | |
|
|
|
|
|
|
|
для: THERAPYbrother
(04.04.2008 в 19:05)
| | От А-Я не работает... Проверял... Филтр не проходит если написать русскую букву. Если не ставить зяпятые между буквами, то они считаются как слово... | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 19:11)
| | Если не ставить зяпятые между буквами, то они считаются как слово
это вы где такое прочитали? | |
|
|
|
|
|
|
|
для: THERAPYbrother
(04.04.2008 в 19:28)
| | Это я не читал, а проверил на собственной шкуре :) | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 19:11)
| | Вы точно этой регуляркой пользуетесь?? | |
|
|
|
|
|
|
|
для: THERAPYbrother
(04.04.2008 в 19:33)
| | Насчет А-Я вместо перечисления, на localhost нормально работает, а вот когда на сервер зашружаю, уже не хочет. | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 19:11)
| | > От А-Я не работает
А какая кодировка (букв в regexp и, соотвественно, текста, с которым работаешь)? | |
|
|
|
|
|
|
|
для: Atheist
(04.04.2008 в 19:46)
| | UTF-8 и в скрипте и от пользователей. | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 20:10)
| | Ну что, упростил выражение до:
[^A-Z0-9_,-.!?():йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ #@;]
До
[^A-ZА-Я0-9_,-.!?(): #@;]
если упростить, не пропускает символы русского алфавита.
Скрипт на PHP, фильтрую с помощью функции eregi(); | |
|
|
|
|
|
|
|
для: -Lex-
(04.04.2008 в 20:41)
| | > UTF-8 и в скрипте и от пользователей.
Тогда нужно добавить модификатор "u": /[^A-ZА-Я0-9_,-.!?(): #@;]/u
P.S. Использовать, конечно, нужно функции preg_* (PCRE), а не POSIX, как это делаешь ты. В PHP6 твой код работать не будет. | |
|
|
|
|
|
|
|
для: Atheist
(05.04.2008 в 00:02)
| | Вот, огромное спасибо, теперь указав А-Я заработало.
Вот когда выпустят PHP6 тогда может и обновлю, а пока так работает, пускай работает.
Сейчас проверил, стали разрешены символы, которых нет в списке... | |
|
|
|
|
|
|
|
для: -Lex-
(05.04.2008 в 00:37)
| | > Сейчас проверил, стали разрешены символы, которых нет в списке
Ты используешь PCRE-функции? | |
|
|
|
|
|
|
|
для: Atheist
(05.04.2008 в 00:45)
| | Я ведь писал, использую eregi(); | |
|
|
|
|
|
|
|
для: -Lex-
(06.04.2008 в 00:39)
| | Я же привёл паттерн под PCRE-функции. Зачем тогда жаловаться, используя его под ereg(i)? Это разные механизмы обработки regexp'ов. Хотя и очень похожие. | |
|
|
|
|