【问题标题】:grab variable from url从 url 抓取变量
【发布时间】:2012-12-19 02:51:42
【问题描述】:

我是 php 新手,但我正在尝试。我需要你们的帮助。 我在浏览器地址栏中有以下网址 www.dome.com\mypage.php?stu=12234342 我正在尝试将 url 从主页传递到选择案例页面调用 select.php 如果我应该回显 url,我会得到 www.dome.com\select.php。所以我决定回显 $_SERVER['HTTP_REFERER'] 相反,这给了我正确的网址。我如何从 www.dome.com\mypage.php?stu=12234342 (12234342) 回显变量 到 select.php。 select.php 包含需要 $var stu=12234342 才能显示正确消息的代码。

$request_url=$_SERVER['HTTP_REFERER'] ; // 从浏览器获取 url 回声 $request_url;

$cOption = $_GET['id'];

switch($cOption) {
    case 1:
    echo ' some text';
        break;
    case 2:
    echo ' this page.php';
        break;

    case 3:
    echo 'got it'; 
        break;
    default:
        echo 'Whoops, didn\'t understand that option: <i>'.$cOption.'</i>';
}

?>

【问题讨论】:

  • 你还应该研究 XSS,因为那里有漏洞。

标签: php mysql ajax jquery


【解决方案1】:

您可以使用 parse_url() 和 parse_string() 从 url 中获取变量:

<?php 

//assuming www.dome.com/mypage.php?stu=12234342;
  $url=$_SERVER['HTTP_REFERER'];

//parse the url to get the query_string-part
  $parsed_url=parse_url($url);

//create variables from the query_string
  parse_str($parsed_url['query'], $unsafe_vars);

//use the variables
  echo $unsafe_vars['stu'];//outputs 12234342
?>

但请注意:您不能依赖 HTTP_REFERER 的可用性。

【讨论】:

  • 如果是,这种方法是否不安全,为什么?
  • 来自 PHP 外部的变量总是不安全的,例如变量的回显将为 XSS 打开大门
【解决方案2】:

试试

echo $_GET['stu'];

在 select.php 上

【讨论】:

  • 试过了,它返回为未定义,所以我回显了 url 并得到了 select.php。如果我单独加载页面没有显示,如果它没有在浏览器中看到 url,它就会显示
  • 您的 PHP 安装版本是多少?如果它是过时的 :) 那么可能你有 $HTTP_GET_VARS 而不是 $_GET。
【解决方案3】:

这就是为什么你需要像这样调用 select.php 文件: www.dome.com/select.php?stu=12234342

然后你可以添加:

echo $_GET['stu'];

顺便说一句,你需要研究一下 XSS,因为那是一个巨大的漏洞。

【讨论】:

  • XSS 确实很危险,但它和 QUERY_STRING 有什么关系?!主要不是和Cookies有关吗?
  • 不仅与 cookie 有关,它还与 RFI 以及更多可能影响 $_GET 和 $_POST 变量的简单滥用有关的漏洞,规则 1) 永远不要信任用户输入。 :)
猜你喜欢
  • 1970-01-01
  • 2017-07-04
  • 2016-05-23
  • 2011-09-28
  • 2021-03-20
  • 2019-03-27
  • 2014-09-30
  • 2014-02-02
相关资源
最近更新 更多