为了防止其他人想到做这样的事情,我觉得有义务回答“不要这样做!!!!!! ”
这是一个可怕的安全漏洞和等待发生的灾难。您不妨交出对服务器的控制权。除此之外,它还可以详细了解您的系统是如何设计的(再次向黑客提供不必要的信息)。此外,您无法保证何时、如何、以什么顺序、使用什么参数、在什么情况下可以调用函数、函数使用的 cookie 变量的内容是什么xxx
。你正在以一种可怕的方式放弃对系统的控制。
现在让我们看看你的具体例子。如果我看到有?execute(...)
它的网站会引发危险信号。我,黑客,心里想,“肯定不会,没有人会做那样的事!” 所以我用谷歌搜索了 URL 的那一部分,果然出现了这个堆栈溢出问题,我看到你正在将参数转储到MYSQL Query中。“天哪,我什至不需要 SQL 注入!”
所以,作为一个邪恶的人,我决定把这个查询放到:
.php?execute('SELECT * FROM `information_schema`.`tables`')
现在我看到了你的数据库的结构,然后看,有一个表叫做user_account_info
! 我想知道我怎么能利用这些信息敲诈你数百万美元……
我可以试试
.php?execute('SELECT * FROM user_account_information')
或者可能
.php?execute('SELECT credit_card FROM user_account_information')
但真的为什么要停在那里,我真的可以用
UPDATE user_account_information SET vital_customer_information =
ENCRYPT(vital_customer_information, my_key_which_you_will_never_crack);
现在,您想找回重要的客户信息吗?你在我的开曼群岛银行账户里存点钱怎么样,然后我再考虑考虑....
即使忽略安全隐患,这也是糟糕的设计。让用户透明地调用代码中的函数会破坏封装、信息隐藏等的全部意义。