PHP $_SERVER['HTTP_HOST'] 转义,这看起来可以接受吗?

PHP $_SERVER['HTTP_HOST'] escaping, does this look acceptable?

提问人:Jeff 提问时间:9/23/2009 最后编辑:Jeff 更新时间:9/23/2009 访问量:1067

问:

我刚刚在学习如何逃避事物,并开始阅读有关由于 XSS 攻击而使用起来如何存在风险的信息。$_SERVER['HTTP_HOST']

我想出了这个,想知道我是否可以得到一些关于我的尝试的反馈。

htmlspecialchars(
    filter_var( $_SERVER[ 'HTTP_HOST' ], FILTER_SANITIZE_URL ),
    ENT_QUOTES, 'UTF-8'
)

看起来还好吗?

很大程度上取决于这个变量是否安全,我只需要询问输入。

编辑:

我将使用它在整个站点中显示,包括基本的锚点、表单操作等。

PHP 转义

评论


答:

3赞 erenon 9/23/2009 #1

这取决于你想用什么。如果要显示它,请使用 htmlspecialchars。如果要用作数据库查询,则可以在mysql的情况下使用mysql_real_escape_string。(或准备好的发言稿)

3赞 Annika Backstrom 9/23/2009 #2

不同的情况应使用不同的转义函数,例如:

  • urlencode 表示将在标记的查询字符串中放置的项目,即。 (另见http_build_query<a>echo '<a href="index.php?foo=' . urlencode($foo) . '">';)
  • mysql_real_escape_string用于SQL语句中的变量(尽管我更喜欢绑定变量)
  • 要向用户显示的字符串的 html实体,其中可能包含 HTML(另请参阅strip_tags)