Tag Archives: php

Как мы сайт от вируса лечили

БактерияОдин мой знакомый пожаловался, что его сайт периодически подглючивал. Стоит отметить, что сайт работал под управлением CMS Joomla. Я стал исследовать сервер, и мое внимание зацепила вот такая строка кода в одном из php-файлов:

<?php eval(base64_decode("DQplcn...KfQ=="));

Внутри этого base64-кода скрывался редирект на сайт сомнительного содержания. Стало очевидно, что сайт подвергся заражению, и надо было его лечить. Беглый подсчет показал, что заражены практически все php-файлы сайта – вхождений такой строки было около 16 тысяч. Под катом несколько шагов, которые я предпринял для устранения этой проблемы.
Continue reading Как мы сайт от вируса лечили

Простейший кеш PHP

Простейший эффективный PHP кешЕсли вам нужно отдавать какой-либо конкретный контент очень-очень быстро, но который довольно редко меняется, рекомендую воспользоваться следующим простейшим механизмом кеширования. Будем генерировать какой-либо контент (из баз данных, из внешних источников, файловой системы, каких-либо вычислений…) и сохранять полученный результат на диск в определенный файл. При последующем доступе, если время жизни кеша не прошло (в моем примере это 1 минута), то просто загружаем содержимое кеша из файла. В следующий раз кеш обновится как минимум через минуту, когда будет произведен запрос очередного клиента на получение данного контента.
Continue reading Простейший кеш PHP

mod_realip2: правильные IP-адреса в Apache2


Допустим, у вас двухуровневая конфигурация веб-сервера – фронтенд nginx + бекенд Apache 2. Тогда при стандартной настройке Apache 2 тот будет видеть, что обращения идут с одного IP-адреса, а именно IP-адреса вашего сервера, ведь именно с него nginx совершает запросы. Проверить это можно простеньким PHP-скриптом:

<?php print $_SERVER['REMOTE_ADDR'];?>

Действительно, в этом случае вне зависимости от адреса клиента у меня отображалось 83.246.222.22 (IP-адрес сервера oioki.ru). Нам нужно исправить эту ситуацию, а именно сделать так, чтобы переменная REMOTE_ADDR выдавала реальный адрес клиента.
Continue reading mod_realip2: правильные IP-адреса в Apache2