【问题标题】:Is this sanitization ok/enough for a page redirection using $_GET?对于使用 $_GET 的页面重定向,这种清理是否可以/足够?
【发布时间】:2011-12-29 07:01:05
【问题描述】:

我正在使用 $_get 进行简单的页面重定向。 我才刚刚开始学习清理用户输入,所以我想知道下面的代码是否可以。是否有针对此特定代码推荐的其他清理方法?如果是,为什么?

关于下面的代码。我检查了用户是否输入了一个值,然后在重定向之前将该值与可接受的值列表进行匹配。

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$PAGES = array('a', 'b', 'c', 'd', 'z');

if (empty($_GET['letter'])) { 
$_GET['letter']="a";
}

if (!in_array($_GET['letter'], $PAGES)) { 
$_GET['letter']="a";  
}

$letter=$_GET['letter']; 
$goto=$letter .".php";
header("Location: http://$host$uri/$goto");

【问题讨论】:

    标签: php get security sanitization


    【解决方案1】:

    当您将 $_GET['letter'] 保存在一组 $PAGES 中时,我认为您会没事的。但是,你的代码真的很糟糕!

    这可能会对您有所帮助: PHP switch with GET request

    也许您会对使用 Zend Framework MVC 感兴趣。

    http://framework.zend.com/manual/en/zend.controller.quickstart.html

    你也会发现 mod_rewrite 的例子。祝阅读愉快!!!

    【讨论】:

    • 感谢您的回复。你能详细说明一下不好吗?
    • 当然。没有代码格式,$PAGES 不应该是大写,$letter 变量没用,也许 $goto 也可以,你可以在 "a" 和 ".php" 中使用单引号,第二个 if 应该在第一个 else 中。
    • 代码格式不是坏代码的标志,尽管它可以被整理。
    • 感谢 cmets。我会努力改进我的编码。
    • @Rich,当然,但必须对格式/可读性发表评论
    【解决方案2】:

    Apache,mod_rewrite 会更好。

    【讨论】:

    • @Dagoon 谢谢。你能给我一个例子,说明我将如何使用 Apache 实现这一点吗?另外,为什么 Apache 会更好?
    • @Dagoon 我不认为 mod_rewrite 单独会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2012-06-15
    • 2011-02-14
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多