0

我需要逃避/清理以下内容吗?

  1. $_SERVER['HTTP_USER_AGENT']在 PHP 脚本中(未插入数据库或显示给用户),例如:

    if ($_SERVER['HTTP_USER_AGENT']==$xyz) {
            echo "Congrats, you are using XYZ browser";
    } else {
            echo "You are not using XYZ browser.";
    }
    
  2. $_SERVER['HTTP_USER_AGENT']当作为会话变量放置时,例如:

    $_SESSION['userAgent']=$_SERVER['HTTP_USER_AGENT']
    
  3. 任何要被散列的东西,例如:

    hash('sha512',$randomDataPostedByUser)
    
  4. 用于电子邮件正文的用户输入(换句话说,我已经处理了电子邮件标题注入)。

如果确实需要对上述任何一种情况进行排除/消毒,那么每种情况的最佳方法是什么?

4

1 回答 1

4

不,在您展示的任何示例中都不需要卫生,邮件正文示例有以下非常罕见的例外:

(仅限 Windows)当 PHP 直接与 SMTP 服务器通信时,如果在一行的开头找到一个句号,则将其删除。要解决此问题,请将这些出现替换为双点。

但是,您可能需要稍后清理会话变量,具体取决于您要对其执行的操作。

其他注意事项:

  • 您的第一个示例似乎没有意义,因为用户代理字符串变化很大。您将不得不使用strstr()或正则表达式来匹配用户代理。

  • 如果您正在进行比较,将用户代理存储在会话变量中可能不是一个好主意 - 只需在需要时从 $_SERVER 数组中提取它。

于 2011-06-04T17:15:48.920 回答