0

晚上好各位溢出者,我有一个小问题,我正在尝试解决,但无法解决,我希望你能提供帮助。

我有一个通过 cURL 将字符串发送到网站的脚本。这完全符合预期,并且网页响应正常。我的问题是我想利用的网站上有一组定义(为了说明目的,下面的示例:)。我已经添加了对存储定义的文件的引用,这就像一个魅力。

定义('TABLE_COUNTER','计数器');

假设(除了所有安全性和胡言乱语)我要发送到的网站上的脚本有一个简单的:

mysql_query($_POST['aaa']);

其中 $_POST['aaa'] 将是一个有效的查询。如果在相关网站上我要执行以下操作,结果将执行:

mysql_query("SELECT * FROM" .TABLE_COUNTER);

翻译成:

mysql_query("SELECT * FROM 计数器");

但是,我似乎无法在网站端获取脚本来执行任何定义了常量的 sqlquery。任何帮助将不胜感激(我在这里失去了很多头发!)。

谢谢!

4

1 回答 1

0

这样做的方法是eval

$myquery_string = 'mysql_query('.$_POST['aaa'].');';
eval($myquery_string);

但是,我真的不建议这样做,因为这意味着表单输入可以包含几乎有效的 PHP 代码,并且它将由您的脚本执行。这比典型的 SQL 或 XSS 注入更糟糕。

此外,在填写表格时,用户必须在查询的文字部分周围包含所有必要的引号。

更好的解决方案是为您的输入定义模板语言,并让 PHP 脚本用适当的常量替换模板占位符。但我不会为你写这个。

于 2012-11-15T02:22:35.103 回答