#php #wordpress #eval
#php #wordpress #eval
Вопрос:
У меня есть несколько плагинов WordPress. Однажды один из моих плагинов выдал ошибку PHP в панели администратора. Это помешало владельцам блогов обновить или удалить мой плагин. Я хочу поместить команды PHP в текстовый файл на моем веб-сайте и заставить плагин периодически проверять страницу на наличие новых команд. Затем используйте eval() для выполнения команд.
Каковы некоторые недостатки этого? Кроме плагина, придется сделать дополнительный запрос.
Комментарии:
1. Возможно, какие-то легальные (это черный ход), безопасность (что, если кто-то подделает вашу конечную точку с помощью этих команд?), ремонтопригодность (эти команды могут сильно изменить базовую систему, что затруднит обслуживание всей системы в случае ошибок и даже взломов).
2. Я никогда, никогда не буду использовать какое-либо программное обеспечение, которое, как я нахожу, делает подобные вещи.
Ответ №1:
ДА. В общем случае eval = зло. В этом случае, если ваша страница будет взломана или скомпрометирована, теперь это может быть передано всем пользователям вашего плагина. Я могу настоятельно рекомендовать отказаться от такого рода действий.
Комментарии:
1. Если «страница взломана», не имеет значения, попадает ли код эксплойта в необходимый php-скрипт или в назначенный текстовый скрипт.
eval()
Вопрос в OPs — это не что иное, какinclude()
.2. Да, это всего лишь incude (), но вы бы не стали включать () php-файлы из любого другого места, кроме вашей локальной файловой системы, не так ли? Возможно, наши мнения немного отличаются, но я считаю очень важным, если я включу какой-нибудь случайный код eval() из места, которому нельзя доверять.
Ответ №2:
Итак, вы облажались с плагином и, следовательно, с механизмом обновления. Использование удаленного url include() не является хорошей защитой от этого. Я бы скорее посоветовал вам разделить функциональность плагина и серверную часть администратора плагина.
Я понимаю, что WP может не способствовать такому разделению проблем, но это может быть более целесообразным подходом здесь. — Кстати, вы могли бы получить более конкретные рекомендации или решения на WordPress.SE для этой темы.