Forum Webscript.Ru
Программирование => PHP => Тема начата: Tronyx от 24 Июля 2002, 13:55:43
-
Я пишу движок в котором весь контент сайта хранится в БД, там 2 таблицы: dirs и files в files есть поле с id той папки в которой "лежит" файл, так же и с dirs. В дирс ещё есть поля с заголовком (title формируется так: Сайт :: заголовок_директории :: заголовок_другой_директории :: ... :: заголовок файла), шаблоном для этой и вложеных папок и т.д.
При запросе всех файлов с расширением html адрес переписывается в "/pages.php?запрошеный_файл" с помощью mod_rewrite. Скрипт проверяет наличие инфы о папке в таблица dirs, запоминает её заголовок, шаблон и т.д. затем тоже самое происходит и с файлом, потом используемый шаблон, заголовок сохраняются в кеш (таблица cash_paths), и при запросе того же УРЛа инфа достаются уже из кеша.
ИМХО конструкция имеет слабость, а именно: "злоумышленик" может написать "/info/about/company/абра_кадабра", в этом случае скрипт проверит наличие каждой папки в БД (а первые три там есть), а на абра_кадабре не чего не найдёт и выдаст сообщение об ошибке но скрипт схавает долю ресурсов на запросах к БД, так опасность по моему мнению заключается в том что злоумышленик может "поставить это дело на конвеер", от одного хакера сервак не упадёт, а нагрузка то прибавится.
Может быть как-то ускорить этот процес или после 3 запрошеных подряд не верных адресов блокировать его по Ip скажем на час-два?
-
Чё не кто не знает ??? :(
-
Ну а что тут знать? Если злоумышленники устроят DOS-атаку, то ничто не спасет.
блокировать его по Ip скажем на час-два
Если хакер не меняет периодически свой IP при атаке, то это уже не хакер.
Можно попытаться нагородить огород, только это приведет к еще большей нагрузке на сервер.
-
GotZfild хочешь сказать не надо блокировать по ip вообще?
-
Tronyx
Я хочу сказать, что блокировка бесполезна.
-
GotZfild а что тогда делать для хоть какой-то защиты?
-
Если есть возможность, оптимизируй скрипт (особенно в отношении БД), иначе расслабься.
-
ага...
я так понимаю что делать надо ОДИН запрос но с поиском по ВСЕМ директориям...
допустим
SELECT * FROM dir WHERE dir = dir1 AND dir = dir2 AND dir = dir3
бла бла бла...
в итоге у тебя только один запрос...
-
Tronyx
Можно сделать иначе:
mysql грубо раз в 15-20 минут делает select distinkt и генерит php-исклюд ввиде допутим массива
и когда чел вводит папку просто делаешь array_search
если есть то пусть работает дальше нету - exit();
-
select distinkt
А это что?