В WordPress вставьте данные настраиваемого поля в файл вместо базы данных

Есть ли способ вставить данные из настраиваемого поля WordPress в настраиваемый файл, а не в базу данных MySQL?

Причина, по которой я хочу это сделать, заключается в том, что я пытаюсь настроить настраиваемое поле как своего рода песочницу PHP для пользователя, и я хотел бы просто использовать include filename.php в файле шаблона и избегать вставки данных PHP в базу данных и безопасность. связанные с этим уязвимости или, что еще хуже, необходимость использовать eval после извлечения данных из базы данных.

Я открыт для любых других предложений для достижения этой цели, но я думаю, что проще всего было бы хранить данные в случайном файле php и вообще обойти базу данных.


person Jason Hoffmann    schedule 12.01.2013    source источник
comment
И вы думаете, что размещение введенного пользователем PHP в файл на сервере не является уязвимостью в системе безопасности...?   -  person Philip Whitehouse    schedule 13.01.2013
comment
Это хороший момент, я полагаю, что это плохая идея во всех отношениях.   -  person Jason Hoffmann    schedule 14.01.2013


Ответы (1)


позвольте мне предварить это, сказав:

Это плохая идея

Ваша идея состоит в том, чтобы конечные пользователи загружали PHP-скрипты, которые затем выполнялись на вашем сервере. Что мешает злоумышленнику загрузить такой скрипт:

<?php
// get a list of all of the wp-config.php files available to this user
$configs = shell_exec("cd ~ && find `pwd` -name wp-config.php");
// go through every match and email the contents 
// of the file to my super secret hacker email or whatever
// btw i now have mysql credentials for all of your wp sites.
?>

И это даже не воображение.

вот как это сделать

Загрузите и установите https://github.com/fyaconiello/WP_Bad_Idea в качестве плагина на свой сайт WP.

Затем добавьте это в single-attack_post.php вашей темы.

<h3>THE CODE</h3>
<pre>
<?php include($post->attack_code); ?>
</pre>
person Francis Yaconiello    schedule 12.01.2013
comment
Спасибо, я могу в конечном итоге не делать этого, похоже, нет никакого способа обойти потенциал зла. - person Jason Hoffmann; 14.01.2013