如何执行存储在MySQL数据库中的PHP?

2021/01/31 09:21 · php ·  · 0评论

我正在尝试编写一个页面,该页面调用存储在MySQL数据库中的PHP。存储在MySQL数据库中的页面包含要在页面加载时运行的PHP(和HTML)代码。

我该怎么做呢?

您可以为此使用eval命令。但我还是建议不要这样做,因为使用这种方法存在很多陷阱。调试比较困难,这意味着一些安全隐患(执行数据库中的不良内容,呵呵)。

请参阅何时在php中使用eval邪恶?例如。Google for Eval就是邪恶的,您会找到很多为什么需要其他解决方案的示例。

另外:这篇博客文章是另一篇有关漏洞利用的好文章指的是过去的vBulletin和phpMyAdmin漏洞,这些漏洞是由Eval使用不当引起的。

简单:

$x // your variable with the data from the DB
<?php echo eval("?>".$x."<?") ?>

让我知道,在许多应用程序中对我来说非常有用,不禁注意到每个人都很快说出它有多糟糕,但是实际上很难给出直接答案...

eval()功能已在此处的其他回复中介绍。我同意,eval除非绝对需要否则应限制使用除了在db中包含PHP代码之外,您还可以使用一个类名,该类名的方法称为execute()每当您需要运行自定义PHP代码时,只需实例化刚从db获取的名称类并->execute()在其上运行即可它是一种更清洁的解决方案,可为您提供更大的灵活性,并显着提高站点安全性。

您可以查看PHP中的eval函数。它允许您运行任意PHP代码。但是,这可能会带来巨大的安全风险,因此最好避免。

您是否考虑过使用Source Control系统为各种安装(以及其中不同的模块)存储不同的fork?这将是我可以想到的几种应用程序配置最佳实践之一。您的要求不是一个不寻常的要求,因此这是过去其他人已经解决的一个问题。并将代码存储在数据库中是我认为您很难找到参考或被建议为最佳做法。

您发布了澄清的好东西。您可能无意中提出了一个答案来寻找合适的问题。

从数据库中读取php代码,并以唯一的名称保存到文件,然后以这种简单的方式包含文件以运行php代码并对其进行调试。

$uniqid="tmp/".date("d-m-Y h-i-s").'_'.$Title."_".uniqid().".php";    
$file = fopen($uniqid,"w");
fwrite($file,"<?php \r\n ".$R['Body']);
fclose($file);                          
// eval($R['Body']);
include $uniqid;

我这样做的方法是在数据库中有一个字段,该字段标识有关需要执行的代码块的唯一内容。该代码的文件名中包含一个单词。我将字符串放在一起以指向要包含的php文件。例:

$lookFor = $row['page'];

include("resources/" . $lookFor . "Codebase.php");

这样,即使黑客可以访问您的数据库,他也无法直接在其中执行恶意代码。他也许可以更改参考词,但是除非他实际上可以将文件直接放在服务器上,否则对他没有好处。如果他可以将文件直接放置到服务器上,那么如果他真的想让他讨厌,那你还是沉没了。仅值我的两分钱。

是的,出于某些原因,您希望执行存储的代码,但是也有缺点。

本文地址:http://php.askforanswer.com/ruhezhixingcunchuzaimysqlshujukuzhongdephp.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!