【问题标题】:Presence of ' in URL GET parameter identifierURL GET 参数标识符中存在 '
【发布时间】:2013-05-29 07:02:44
【问题描述】:

如果我有这样的网址:

http://www.example.com/app.php?aa=10&bb=20

<?php
echo $_GET["aa"]; //no problems
echo $_GET["bb"]; //no problems
?>

http://www.example.com/app.php?'aa=10&amp;bb=20

aa前面的'有什么作用?在 GET 变量标识符中使用 ' 是否非法?

<?php
echo $_GET["'aa"]; //problem!
echo $_GET["bb"]; //no problems
// echo $_GET["aa"];  Also a problem
?>

这是否意味着在第二种情况下它甚至不将'aa 视为 GET 参数?

谢谢!

【问题讨论】:

  • 我无法重现您的错误。 $_GET["'aa"] 对我来说很好。
  • 来自 PHP-Website:有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。 (php.net/manual/en/language.variables.basics.php)
  • 我相信这是指变量名$variable,而不是在url中找到的get查询参数。

标签: php url get query-string


【解决方案1】:

'a 作为查询字符串键不是很好的做法,但是您可以对其进行 url_encode 或转义。

至于把它放到变量名中,它是一个无效字符。 变量名(和数组键)只能包含字母数字字符和下划线。 此外,它们也不应该以数字开头。

在某些情况下,撇号可用作将代码注入 PHP 脚本的一种方式。

总的来说,您应该避免在查询字符串键中完全使用撇号:)

【讨论】:

  • 如果它是好的做法,那么坏的做法也应该起作用。在这种情况下,它不起作用。这就是问题
  • @shiplu.mokadd.im 不是很好的做法,我的意思是在某些情况下可以使用它(代码注入)。然而,在 PHP 中,它是一个非法字符,请不要让这个更难以理解:)
  • 如果你在 PHP 代码中使用 %27aa 应该可以工作(但它很难看)
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多