传递和检索referer页面url

时间:2016-08-21 09:21:00

标签: php url

所以我一直在编写一个登录脚本,成功登录后,重定向到上一页。我已经看到了几种传递referer URL的方法:

  1. 使用$ _SERVER ['HTTP_REFERER'] - 发送整个引用网址。可能被操纵。所以不要被信任。

  2. $ _ GET并将referer作为url参数传递。根本不安全。

  3. 在表单中使用隐藏字段。即使使用POST也不太安全。

  4. 因此,由于方法2允许最大的灵活性,我选择它。问题是: 如果我在没有域名的情况下传递了网址(“http://www.domain.com/”被剥离),并且稍后在重定向时手动添加域名,我可以确定生成的网址重定向是否保留在我的域中?如果没有,我该怎么做以确保它不会偏离?

    (假设如果没有包含结果网址的网页,则会将其重定向到主页)

    例如: http://www.domain.com/login.php?ref=category/products/product-1.php 成功登录后,该页面将重定向到'http://www.domain.com/'.$_GET['ref']

    我应该知道如何验证referer url参数:

    1. '../'可以帮助导航到上一个文件夹,如果有的话,必须删除。

    2. 必须剥离在referer url参数中传递的所有标记。

    3. 必须删除所有'://'。

1 个答案:

答案 0 :(得分:1)

几点提示:

  1. 您根本不需要提供重定向域。所以不要打扰 如果您不需要重定向到另一个域,请使用域。当然 你必须检查,如果某个域名没有伪造在$ ref
  2. 您可以在$ ref中使用页面别名而不是真正的网址,并在重定向之前构建网址。
  3. 只有真正安全的方法是检查网页上真正存在的网址