【问题标题】:Posting a constant within a variable using cURL使用 cURL 在变量中发布常量
【发布时间】:2012-11-15 00:50:05
【问题描述】:

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

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

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

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

mysql_query($_POST['aaa']);

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

mysql_query("SELECT * FROM " .TABLE_COUNTER);

翻译成:

mysql_query("SELECT * FROM counter");

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

谢谢!

【问题讨论】:

  • 你遇到了什么错误?
  • 标准无效查询(因为实际发送的查询如下:SELECT * FROM " .TABLE_COUNTER
  • 您打算使用的页面上是否定义了TABLE_COUNTER?您是否设置了错误报告以显示所有错误,包括通知?
  • 我们需要查看更多代码,即您尝试执行查询的实际代码。
  • 如果您发送的是字符串表达式而不是字符串,那将是您问题的相关信息。您需要在接收端编写一个迷你解析器。

标签: php mysql curl


【解决方案1】:

方法是使用eval:

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

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

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

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

【讨论】:

  • 现在这很酷。我喜欢。我已经采取了一些措施来阻止 SQL 注入,但感谢您的意见。
猜你喜欢
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多