逃避输出,在哪里使用?

时间:2015-11-10 13:21:41

标签: php escaping

我读了一篇关于在输出上转义数据的好文章,其中有一个例外,它告诉你何时需要转义输出数据而不是在哪里使用。

规则是

  1. 如果在代码之间插入,则应该转义< > &
  2. 如果在属性中插入,您也需要转义引号。所以< > & " '
  3. 如果它作为URL插入,那么您还需要检查协议方案(以确保它不是javascript:URL)
  4. 前两个我理解并有解决方案。

    因此,从具有此逻辑的$_GET变量开始,它将如下所示

    如果在代码之间插入:

    $name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING);
    echo 'Hi '. htmlspecialchars($name, ENT_NOQUOTES, 'UTF-8');
    

     $name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING);
    echo 'Hi '. htmlspecialchars($name, ENT_COMPAT, 'UTF-8');
    

    如果插入属性:

    <img src="<?php echo htmlspecialchars($img_path, ENT_COMPAT, 'UTF-8')">
    

    如果前两个是正确的,那么第三个就会出现在列表中,那个让我感到困惑。对这个有点帮助吗?

0 个答案:

没有答案