我继承了一个WordPress网站,该网站使用RunPHP插件在帖子之间执行PHP代码段。我觉得这不是实现此类功能的最佳方法。但是,由于这是很长时间以来在功能上都正确的遗留代码,因此我需要一些可靠的问题场景示例。
对于不熟悉RunPHP的人来说,它是一个插件,可以使用eval()执行嵌入在Post或Page主体中的PHP代码。永远不会从用户那里收到该代码块,而是由网站所有者/内容创建者将其输入数据库。
在我们的上下文中,此插件的用例如下。
表单创建为Post,其提交动作设置为Page(我们将其称为表单处理程序)。表单处理程序的主体中包含PHP代码,并且已为该Page激活RunPHP插件。提交表单后,表单处理程序将接收数据,并执行其主体中的PHP代码。
除了在表单处理程序代码中存在一些相当明显的安全性问题(动态用户提交的变量评估,没有输入清理,没有参数化的SQL查询)。
这里有人可以验证我对WP中运行时代码执行插件的怀疑吗?
非常感激。
帖子中的表单代码-
<form action="/?p=1234" method="post">
<input name="foobar" type="text" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
Page中的处理程序代码(此代码存储在数据库中,并在运行时通过eval()编辑)-
<?php
$foobar = $_POST["foobar"]; // This contains a SQL-injection vulnerability; But that's a separate issue, I think
$query = "INSERT INTO table (field) VALUES (\"" . $foobar . "\")"; // Use variable in a query string
?>
Run Code Online (Sandbox Code Playgroud)