【问题标题】:Sending token query string parameter from webpage url in POST request在 POST 请求中从网页 url 发送令牌查询字符串参数
【发布时间】:2015-05-28 17:45:05
【问题描述】:

我正在尝试发送带有部分网页 URL 作为参数的 POST 请求。例如,在这个网址中:

http://testsite.com/confirmEmail/?token=abcdefg

我希望能够发送值为 abcdefg 的输入令牌。我想让它响应不同的令牌值。有任何想法吗? 谢谢

【问题讨论】:

  • 您显示的 url 是 GET 请求的示例。 Post 是在表单提交时完成的,并且永远不会包含在 URL 中。但是,如果您尝试将值“abcdefg”添加到表单中,则从 URL 访问 GET,如下所示:$_GET[token] php.net/manual/en/reserved.variables.get.php
  • 所以你是说从我需要做一个 GET 请求的 url 中提取令牌值,而用 POST 请求是不可能的?编辑:谢谢
  • Post 和 Get 是分开的,Post 是表单提交,Get 是通过 URL diffen.com/difference/GET_%28HTTP%29_vs_POST_%28HTTP%29 传递的
  • 我想我很困惑。我不想通过 url 传递令牌值,我想从 url 中提取它并通过表单通过 POST 发送它
  • 我认为这种情况很正常,您通过电子邮件确认他们的电子邮件,所以他们只是获得一个链接,您需要从那里获取。

标签: php http post request token


【解决方案1】:

这个答案是假设他们会在这个页面上做一些动作,否则你会想要一个重定向。

<?php

$token=$_GET['token'];

?>
<form method="POST">
<input type="hidden" name="token" value="<?php echo htmlentities($token, ENT_QUOTES);?>" />
<!--other form fields and submit button here-->
</form>

更新: 这是一个简单的答案,很容易理解,但当然,直接从 url 回显一个 get 变量可以打开 xss。有人编辑了我的答案以从该变量中删除引号,但 htmlentities() 也容易受到 xss 的攻击。我相信现在合适的功能是htmlspecialchars($token, ENT_QUOTES, "UTF-8")。如果你走这条路,你需要小心你现在放入令牌中的编码和字符,所以它们不会被剥离,这可能会破坏你的验证过程。看起来它在示例中是数字,所以你应该没问题。另请记住,仍然有人可以发布修改后的表单,因此您需要清理此令牌字段以防止注入,但希望这与此问题无关。

【讨论】:

  • 所以我已经有了一个通过 POST 请求发送电子邮件和密码值的表单。如果我将此令牌输入添加到现有表单中,它会通过表单 POST 发送吗?
  • 是的,您只需使用$_GET[] 获取值(您可能希望在该值上使用isset() 的if 语句以防万一)然后您可以将其作为隐藏输入插入在您的表单中,只要表单方法是 POST,整个表单和所有输入都将作为 POST 发送
  • 顺便说一句,根据您使用的浏览器,您可以按 F12 启动开发者工具,并使用“网络”选项卡监控浏览器发出的所有请求。因此,您可以使用它来确认您的表单是否传递了该隐藏输入。这对于解决此类多部分问题很有帮助,因此您可以在完成流程和调试时消除问题。
  • 我把 在 POST 表单内部还是外部?您提供的示例在外部,但是如何将拉取的值响应地放置为表单 POST 的值?
  • 我已经尝试了两种方法,也没有响应从 url 中提取值。但是,将隐藏的令牌输入添加到表单中现在将 Token 显示为参数。这样就成功了
猜你喜欢
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2017-07-22
  • 1970-01-01
相关资源
最近更新 更多