3. Баг кэширования несуществующих страниц
При стандартном кешировании Друпал сохраняет в кеш несуществующие страницы. Например, у нас есть сайт example.com, на котором имеются следующие страницы:
example.com/catalog example.com/catalog?page=1 example.com/catalog?page=2 ... example.com/catalog?page=1000
Т.е. Друпал кеширует эти страницы через cache_set($base_root . request_uri(), $data, 'cache_page', CACHE_TEMPORARY, drupal_get_headers());. Но проверку на существование страницы request_uri() не делает... И если мы будем запрашивать несуществующие страницы, например:
example.com/catalog?page=1001 example.com/catalog?page=1002 ...
и так до бесконечности, то Друпал будет сохранять в таблицу cache_page весь этот хлам. В качестве сохраняемых данных будет браться запись из последней существующей страницы (example.com/catalog?page=1000).
В итоге, если запустить на такой сайт бота, который будет делать подобные запросы, таблица cache_page очень быстро разрастется до огромных разделов.
Баг заметил sinkora
- Тэги:
- Войдите или зарегистрируйтесь, чтобы добавлять комментарии
