Я стараюсь вообще такую магию не пользовать или кешировать напрочь результаты работы заклинаний :)
Хотя, я даже не задумывался — что же там накладного… Наверное — это условный рефлекс уже: runkit — медленно.
Оно как раз должно работать глобально, чтобы ни с какого места не смогли бы до него достучаться. Я б ещё использовал auto_prepend_file директиву в ini файле. А там — если адреса страниц не в списке — просто удалять эту функцию (чтоб даже мышь не проскочила). А для разрешённых адресов — переопределять.
Кстати (c php.net): Замечание: По умолчанию, только пользовательские функции могут быть удалены, переименованы или изменены. Для перекрытия внутренних функций, необходимо включить в php.ini опцию runkit.internal_override.
Вариант 1:
Можно приколхозить слежение за каким-либо файлом, хоть на tail -f и просто писать в файл из РНР. А потом в РНР ждать появления определённого файла с ответом и просто его транслировать.
Вариант 2:
Ставим модуль runkit, запрещаем все функции кроме, например, exec(), через ранкит переименовываем стандартную функцию exec() и делаем свою с фильтрацией команд и т.п. Потом уже вызываем переименованную функцию (которая на самом деле стандартная) и возвращаем её результат. Выгода: вызывай хацкер хоть завызывайся эту функцию, если команды не пройдут проверку — в сад.
Вариант 3:
Придумать самим.
Они какбе совершенно для другого предназначены и я не могу пока представить себе — как реализовать даже идиому «открытие-чтение-закрытие» без явного описания закрытия (ниже был отличный пример на питоне).
avaaz.org/en/ — справа около слайдшоу есть счётчик уникальных людей, когда либо что-то подписавших или иначе совершивших действие на сайте. Оттуда и имейлы. Также, предвосхищая вопросы о спаме — в каждом(!) письме есть честная(!) ссылка отписаться.
П.С. Для разных кампаний конечно же рассылается не весь набор — то уже как решится.
Петиции отправляются адресатам. Было даже такое, что все поздравления Далай-Ламы с днём рождения распечатали и ему подарили — не одна и не 2 коробки :)
Потому что рассылка обрабатывает блоки имейлов по странам и ооочень трудно отправить 10млн. имейлов быстро. Поэтому — уехал какой-то процент писем на испанские адреса — пришли испанцы.
Как прямой участник команды разработчиков могу сказать, что петиций подписывается по десятку в секунду (в пике до 100 — после массовой e-mail рассылки) — просто не все видно в RECENT SIGNERS. Если бы мы показывали всех — была бы отличная галюциногенная карусель :)
Всё дело в том, что нестатический метод, объявленный без модификатора может быть выхван как статически, так и в контексте объекта. Это нерационально и удручает если сделано так намеренно и один метод вызывается как class::method() и $class->method().
Хотя, я даже не задумывался — что же там накладного… Наверное — это условный рефлекс уже: runkit — медленно.
Кстати (c php.net):
Замечание: По умолчанию, только пользовательские функции могут быть удалены, переименованы или изменены. Для перекрытия внутренних функций, необходимо включить в php.ini опцию runkit.internal_override.
Мануал: http://php.net/manual/ru/book.runkit.php
Можно приколхозить слежение за каким-либо файлом, хоть на tail -f и просто писать в файл из РНР. А потом в РНР ждать появления определённого файла с ответом и просто его транслировать.
Вариант 2:
Ставим модуль runkit, запрещаем все функции кроме, например, exec(), через ранкит переименовываем стандартную функцию exec() и делаем свою с фильтрацией команд и т.п. Потом уже вызываем переименованную функцию (которая на самом деле стандартная) и возвращаем её результат. Выгода: вызывай хацкер хоть завызывайся эту функцию, если команды не пройдут проверку — в сад.
Вариант 3:
Придумать самим.
Кадыралиева Жанылсын Теміралиевна — Тренер национальной категории, Мастер спорта РК
Вид спорта: тогыз кумалак
П.С. Для разных кампаний конечно же рассылается не весь набор — то уже как решится.