REQUEST и атаки

Fake

Guest
REQUEST и атаки

Здравствуйте.

поискал по форуму и факам, но ответа на мой вопрос не нашел...

вся информация проходящая от клиента к серверу проходит через глобальную переменную $_REQUEST, написан скрипт, проверяющий ее на разные слова\символы. Собственно сам вопрос:

взломать\нанести вред сайту можно либо через запросы(post, get, cookie все что в request) и путем атаки на сервер(dos, ddos, etc)?
 

t3[0one]

Новичок
всем тем что ты обрабатываеш от клиента !)

-~{}~ 14.10.05 22:46:

вернее принимаеш
 

kvf77

Red Devil
Fake

а зачем скрипт проверяет ее на всякие символы? сама по себе информация в массиве REQUEST ничего нанести никому не может - это всего лишь набор байтов - другой вопрос что ты собираешься с этой информацией делать и как использовать - вот тут возможны проблемы, если ты будешь использовать эти данные необдумано, например не проверять перед посылкой их в базу
 

Fake

Guest
Автор оригинала: kvf77
Fake

а зачем скрипт проверяет ее на всякие символы? сама по себе информация в массиве REQUEST ничего нанести никому не может - это всего лишь набор байтов - другой вопрос что ты собираешься с этой информацией делать и как использовать - вот тут возможны проблемы, если ты будешь использовать эти данные необдумано, например не проверять перед посылкой их в базу
скрипт проверяет весь массив request на скьюл иньекции и xss атаки, чтобы дальше использовать в запросах и т.д. ну при составлении запроса тож проверяю, например если я тут подразумевал число то ставлю settype... я щас пишу защиту и хочу знать, от куда мне ждать повоха... сначала я обрабатывал по отдельности GET POST & COOKIE но потом знакомый порекомендовал сделать енто все за один заход... тоесть обрабатывать REQUEST
 

kvf77

Red Devil
Fake

зачем делать лишние проверки? это совершенно ни к чему - надо проверять только то, что используешь
 

Fake

Guest
Автор оригинала: kvf77
Fake

зачем делать лишние проверки? это совершенно ни к чему - надо проверять только то, что используешь
значит фактически урл, когда его часть используется где либо, как например в построении скул запросов, и данные в форме?
 

Nimous

Guest
Проверяй данные, которые хочешь использовать
 

Фанат

oncle terrible
Команда форума
скрипт проверяет весь массив request на скьюл иньекции
эта проверка бессмысленная.
SQL инъекций не бывает.
Бывают запросы, составленные с нарушением синтаксиса.
И только.
Если изучить несложный синтаксис SQL запросов, и соблюдать его, то никакие проверки на инъекции не понадобятся.
от XSS атак тоже надо с головой защищаться, а не чохом всё лупить.
знакомый порекомендовал сделать енто все за один заход... тоесть обрабатывать REQUEST
глупость твой знакомый порекомендовал.
 

Bermuda

Новичок
Fake
Так какой адрес твоего сайта говоришь? У меня как раз есть идея DOS атаки специально расчитанной на наличие такой проверки. Очень просто -- очень много одновременных запросов по 10-15 маленьких переменных GET и POST в каждой. А если ты еще и регэкспы заюзал, то дело верное.
 

Royal Flash

-=MaestrO=-
глупость твой знакомый порекомендовал.
А обосновать, почему это, собственно, глупость?
Зачем юзать свои спец. функции, на предмет проверки, в какой именно переменной пришли необходимые данные (POST или GET), если есть очень простой и надежный способ, например $id = $_REQUEST['id']; Если добавить сюда проверку переменной id на корректность ее данных - получится весьма хорошее решение.

Также, можно воспользоваться функцией import_request_variables(), с обязательным указанием префикса. Например:
PHP:
import_request_variables('gp', 'user_');
Весьма удобная функция по читаемости кода, так как все переменные с приставкой user_ будут обращать на себя повышенное внимание разработчика.
 

SiMM

Новичок
> Зачем юзать свои спец. функции, на предмет проверки, в какой именно переменной пришли необходимые данные (POST или GET), если есть очень простой и надежный способ, например $id = $_REQUEST['id'];
При чём тут $_REQUEST, когда в целом
> знакомый порекомендовал сделать енто все...
не более чем
> глупость
?

> Также, можно воспользоваться функцией import_request_variables()
А какой в этом смысл? Шило на мыло?

> переменные с приставкой user_ будут обращать на себя повышенное внимание
Ну а теперь ты глупость сказал. Не вижу разницы с точки зрения повышения внимания и использования $user_ и $_GET/$_POST/$_COOKIE/..., разве что неудобство в том смысле, что $user - несуперглобален.

Всё необходимое есть в PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
 

Фанат

oncle terrible
Команда форума
как же тяжело общаться с теми, кто не умеет читать и думать.

SiMM, он ВООБЩЕ не въехал, о чём речь.
он увидел ВО ВСЁМ треде ДВЕ знакомые буквы.
этот наш гений рассуждает о получении данных. только о получении.
посмотри - про что он пишет? про реквест и про импорт. тема, затронутая автором поста, находится выше его понимания. как и всё последовавшее обсуждение. Единственная деталь, на которой он остановился - это использование реквест вместо пост для ПОЛУЧЕНИЯ.
а то, что речь шла о натравливании ПРОВЕРОК на весь реквест - до него просто не дошло.
то есть, ему не имеет смысла давать ссылку на фак по запросам. его не интересуют запросы.

ЕДИНСТВЕННАЯ проблема, которую он решает: запутался, бедняжечка, в GET и POST и нашёл гениальное решение - обращаться к РЕКВЕСТ.
 

Royal Flash

-=MaestrO=-
SiMM
Я хотел получить подтверждение: используется ли REQUEST, если данные от пользователя c различных скриптов сайта поступают в GET или POST? Ведь в этом форуме да и в книгах предлагается использовать функцию, которая проверяет массивы GET и POST, и возвращает переменную, с содержимымым одного из массивов. Лично я не вижу в этом никакого смысла, разве что для поддержки работоспособности скриптов в старых версиях PHP до 4.1.0, что для меня не актуально.
Я не имею достаточного опыта общения на данном форуме, у меня не 4356 сообщений, и сообщение, что
обрабатывать REQUEST == глупость
я понял буквально, т.е. у меня не надолго закралось подозрение, что вообще работать с REQUEST не желательно :).
 

white phoenix

Новичок
Royal Flash
дело не количестве сообщений, а в логическом мышлении и смекалке. обрабатывать весь запрос и искать в нем что-то действительно глупо. В своей cms я делаю обработку только используемых переменных непосредственно перед началом действий с ними. Там где должно быть число я делаю [m]intval[/m], там где текст делаю [m]mysql_escape_string[/m] при составлении SQL-запроса, при выводе делаю [m]htmlspecialchars[/m] и живу спокойно. Обрабатывать _REQUEST можно для обнаружение атаки, т.е. если Вы заподозрили неладное, и думаете что Вас взломали. Можно приделать скрипт который ищет в _REQUEST типичные команды SQL и записывает их в лог.
 

Фанат

oncle terrible
Команда форума
дада
несомненно, умение читать и воспринимать информацию в контексте темы - это отличительный признак только данного форума.
Только люди, у которых больше тыщи, это умеют. А остальные читают по слогам, и забывают предыдущий раньше,чем прочли следующий.

больше всего убивает не невежество, а его воинственность.
 

zarus

Хитрожопый макак
А не все ли равно, откуда читать (и фильтровать) данные - из ГЕТ / ПОСТ или сразу РЕКВЕСТ? Ведь РЕКВЕСТ = ГЕТ + ПОСТ или я не прав? Просветите, пожалуйста.
 

Фанат

oncle terrible
Команда форума
в принципе - всё равно.
если не боишься запутаться в переменных.
одна из причин, по которой данные разделили - это проблемы таких вот воинственных страдальцев, которые когда-то поставили куку с одним именем, забыли её, а потом в ужасе бегают по форумам и говорят, что гадкий пхп им переменную поста с таким именем переписывает.

-~{}~ 23.11.05 11:07:

но вообще-то, обсуждение данной темы в этом треде - оффтопик.
здесь обсуждалась защита от взлома, а не источник для чтения.
 

Royal Flash

-=MaestrO=-
white phoenix
обрабатывать весь запрос и искать в нем что-то действительно глупо
Согласен. Все возможные переменные абсолютно ни к чему. Нужно обрабатывать только то, что действительно необходимо. А чем, собственно, плох REQUEST, для обработки переменных, которые могут приходить как в GET так и в POST запросах? Может быть вы не внимательно читаете мои посты?

zarus
Если переменные могут быть в GET и POST - наилучший вариант - REQUEST. Единственный возможный мнус - в таких скриптах недьзя в дальнейшем использовать GET и POST, чтобы не пропустить что-либо, что может навредить вашему скрипту.
 

SiMM

Новичок
> переменные могут быть в GET и POST - наилучший вариант - REQUEST.
Хотя бы один практический пример (не высосанный из пальца), где это нужно, в студию.
 

Kelkos

Сам себе программер
offtop:
Хотя бы один практический пример (не высосанный из пальца), где это нужно, в студию.
да есть такие примеры.. есть..

$id=$_GET['id'];
if ($_POST['id']) $id=$_POST['id'];

или
$id=$_REQUEST['id'];
 
Сверху