Показать сообщение отдельно
Старый 01.10.2013, 16:35   #33
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
В общем случае ключ в кэше должен учитывать все что у вас может повлиять на содержимое. Т.е. id страницы, текущий type, GET переменные, содержимое config и т.п. И еще место откуда вызывается.

Примерно так
PHP код:
            $cache_key md5(serialize(array(
                
__CLASS____FUNCTION__,
                
$GLOBALS["TSFE"]->id$GLOBALS["TSFE"]->type,
                
$_GET[...]))); 
Нужно помнить еще и такой нюанс - если у вас на одном сервере несколько проектов, и есть одни и те же модули. То теоритически разные клиенты могут использовать одинаковые ключи. Ведь в мемкешед общее пространство, никак не разграниченное между разными пользователями и подключениями.
Из всего этого не понятно следующее:

1. вот человек ввел id=5005034 (у нас движок выдаст 404 - ошибку) - сам просчитает, т.к. такой страницы нет, и для type - тоже самое
а вот если мы используем показ новостей к примеру по additionalparams для typolink - пример tx_news[id]=50
получается если человек от "себя" введет не верный id-записи, то у Вас запишется кэш +1 - которого в принципе не существует. И так до тех пор, пока он (злоумышленник-вредитель) не устанет вводить разные значения - одним словом так и сайт можно "завалить".... Получается как - каждый раз проверять на существоание такого ID, и если есть, то разрешаем писать кэш?

Как проверить валидность id-записи?

2. вот мое наблюдение по работе ядра системы:
если у нас запрашивается не верная страница по id, type - то typo3 в кэш ничего не пишет - здесь вродебы все ясно...
но вот как она проверяет additionalparams, в т.ч. useCachHash - что это валидный url? Как я не старался - все равно она лишних кэшей никаких не пишет... Даже useCachHash = FALSE

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Нужно помнить еще и такой нюанс - если у вас на одном сервере несколько проектов, и есть одни и те же модули. То теоритически разные клиенты могут использовать одинаковые ключи. Ведь в мемкешед общее пространство, никак не разграниченное между разными пользователями и подключениями.
А про это, думаю - что просто префикс добавить и все...
Ивано++ вне форума   Ответить с цитированием