使用eval();从数据库直接执行php

时间:2014-12-14 10:58:15

标签: php mysql mysqli eval

我正在创建一个网站,我将所有基于HTML的页面存储在mysqli database中,我遇到了这个问题,我无法使用{执行我的PHP代码{1}}。所以我找到了这个解决方案,我必须使用echo来运行我的PHP代码,我听说如果你没有正确验证它可能会非常危险。

eval();

到目前为止,这是我如何验证它,这是否足够安全?

注意:当我从数据库请求信息时,会使用该行代码,以便在页面上显示。

对不起,如果我没有足够好地解释自己,我还是新手。 :)

这就是我从数据库中获取页面的方式。

$firstname =  htmlspecialchars($mysqli->real_escape_string($row['firstname']));

2 个答案:

答案 0 :(得分:2)

real_escape_string只删除可能用于SQL注入的任何字符。如果您将用户输入作为PHP代码执行,则可以为您的用户提供与PHP脚本相同的可能性。例如,包括运行系统命令以从服务器中删除所有文件。

你不想这样做。你提到的那个特例,你能详细说明吗?对您的问题可能有更好的解决方案。

答案 1 :(得分:1)

我只想说你在这里做了两件通常被认为是不良行为的事情。

  1. 存储将在数据库中执行的代码。 (始终将代码存储在文本文件中,这样它们受版本控制,也不易受到SQL攻击)。
  2. 使用eval()。
  3. 这两个都是坏主意,几乎肯定会在某些时候咬你的屁股。

    你想做什么?