Как человек, у которого взломали фронт-энд на базе PHP, внедрили в него код и попытались самостоятельно очистить внедренный код (после восстановления сайта из чистого tarball фреймворка и модификаций, которые я сделал), позвольте мне дать некоторые реальные знания и ответы: единственный реальный ответ для исправления этого - начать все сначала. Попытка очистить код будет ИСКЛЮЧИТЕЛЬНО сложной. Скорее всего, он встроен повсюду, и вы не сможете найти его весь. Также вполне вероятно, что ваша система тоже скомпрометирована, не только PHP, но и сама система может иметь вредоносное программное обеспечение, загруженное через внедренный и обфусцированный код.
Проверенное и верное решение, которое также принято считать единственным разумным вариантом в подобных ситуациях, - это Nuke It From Orbit* и начать заново с чистых резервных копий (или кода с контролем версий). Не только код сайта, но и сам сервер. Код, внедренный в PHP-сайт, может быть запущен чем угодно - от простого сканирования портов до установки полноценного вредоносного ПО на саму ОС, вплоть до руткитов. Поэтому начните сначала, стерев сервер, на котором он находится, уничтожьте кодовую базу сайта и восстановите его из чистого кода с контролем версий или последней чистой резервной копии, которая у вас есть.
(TL;DR, не пытайтесь удалить весь внедренный код, просто начните заново на чистом сервере и восстановитесь из резервных копий или данных репозитория Version Controlled)
Обратите внимание, что я также взломал свой собственный сайт в частной лаборатории и доказал, что обфусцированный код может быть использован для загрузки вредоносного ПО на сервер хоста и на клиентов, посещающих зараженный сервер... вот почему вы должны уничтожить среду и начать заново с чистых резервных копий. Затем, впоследствии, залатайте дыру, которая использовалась для внедрения кода на сайт.
* Если вы не знаете, что это значит, то "Nuke it from orbit" - это разговорный термин, который в основном означает отключение сайта, выключение сервера, стирание всего жесткого диска и начало работы со свежей установки сервера и кодовой базы сайта.
Я обнаружил, что да, это возможно и может использоваться для простых функций завершения, но поскольку эта конкретная функция _man
выполняет некоторую работу по синтаксическому анализу и проверке, она генерирует ошибку при вызове вне ожидаемого контекста.
Вот что я сделал, чтобы связать функцию завершения _man
с комбинацией клавиш, чтобы ее можно было вызывать вручную.
Определите функцию-оболочку, которая устанавливает необходимые параметры.
_man_autonomous () {
eval $_comp_setup
_man "$@"
}
Зарегистрируйте новый виджет в строковом редакторе:
zle -C complete-man expand-or-complete _man_autonomous
привяжите виджет к Ctrl + T
bindkey '^T' complete-man
Существует пример этого метода с использованием _files
в FAQ по zsh .
Я не уверен, почему zsh не предоставляет эту функциональность ... К счастью, кто-то сделал взлом: https://github.com/Valodim/zsh-capture-completion
$ capture.zsh 'man gr'
grep
<snip>
groff
<snip>