Php 我是否需要逃离/消毒以下物品?如果是,最好的方法是什么?

Php 我是否需要逃离/消毒以下物品?如果是,最好的方法是什么?,php,sanitize,Php,Sanitize,我是否需要逃离/消毒以下物品 $\u服务器['HTTP\u用户\u代理]在 PHP脚本(未插入到 数据库或显示给用户),用于 例如: $\u服务器['HTTP\u用户\u代理]何时 作为会话变量放置,例如 例如: 任何要散列的内容, 例如: hash('sha512',$randomDataPostedByUser) 发送给电子邮件正文的用户输入 (换句话说,我已经 注意电子邮件标题的插入) 如果上述任何一种情况确实需要清除/消毒,那么针对每种情况的最佳方法是什么?否,在您展示的任何示例

我是否需要逃离/消毒以下物品

  • $\u服务器['HTTP\u用户\u代理]
    在 PHP脚本(未插入到 数据库或显示给用户),用于 例如:

  • $\u服务器['HTTP\u用户\u代理]
    何时 作为会话变量放置,例如 例如:

  • 任何要散列的内容, 例如:

    hash('sha512',$randomDataPostedByUser)
    
  • 发送给电子邮件正文的用户输入 (换句话说,我已经 注意电子邮件标题的插入)


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

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

    (仅限Windows)当PHP直接与SMTP服务器通信时,如果在行首发现句号,则会将其删除。若要反作用,请将这些引用替换为双点

    但是,您可能需要稍后清理会话变量,具体取决于您将如何处理它

    其他说明:

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

    • 如果要进行比较,则将用户代理存储在会话变量中可能不是一个好主意-需要时,只需从$\u服务器阵列中提取它即可


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

    (仅限Windows)当PHP直接与SMTP服务器通信时,如果在行首发现句号,则会将其删除。若要反作用,请将这些引用替换为双点

    但是,您可能需要稍后清理会话变量,具体取决于您将如何处理它

    其他说明:

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

    • 如果要进行比较,则将用户代理存储在会话变量中可能不是一个好主意-需要时,只需从$\u服务器阵列中提取它即可


    在第一个示例中,您可能遗漏了第二个
    =
    。电子邮件正文听起来可疑,所有其他示例看起来都很可疑sane@Pekka谢谢,我添加了第二个
    =
    。在第一个示例中,您可能缺少第二个
    =
    。电子邮件正文听起来可疑,所有其他示例看起来都很可疑sane@Pekka谢谢我添加了第二个
    =
    。因此不可能创建类似以下情况的漏洞攻击?(如果这是荒谬的,我提前道歉;我还在学习。)
    hash('sha512',$randomDataPostedByUser)
    其中
    $randomDataPostedByUser
    $nonimportant)
    @user nope,因为
    将被解释为字符串数据。没有办法以这种方式“突围”(除非使用
    eval()
    运行代码,除其他外,出于这个确切的原因不应该这样做)@Pekka太棒了!谢谢我意识到第一个例子没有多大意义,但我就是想不出一个更好的例子。关于将用户代理存储在会话变量中,我认为这样就可以看到它是否在不同的请求之间发生了变化。据我所知,除非它是由用户操纵的,否则不应该有理由在会话中期更改它。通过将其存储在会话中,我可以跟踪更改。这有意义吗?@user是的,有意义-这是最好的方法。所以不可能创建类似于以下情况的漏洞利用?(如果这是荒谬的,我提前道歉;我还在学习。)
    hash('sha512',$randomDataPostedByUser)
    其中
    $randomDataPostedByUser
    $nonimportant)
    @user nope,因为
    将被解释为字符串数据。没有办法以这种方式“突围”(除非使用
    eval()
    运行代码,除其他外,出于这个确切的原因不应该这样做)@Pekka太棒了!谢谢我意识到第一个例子没有多大意义,但我就是想不出一个更好的例子。关于将用户代理存储在会话变量中,我认为这样就可以看到它是否在不同的请求之间发生了变化。据我所知,除非它是由用户操纵的,否则不应该有理由在会话中期更改它。通过将其存储在会话中,我可以跟踪更改。这有意义吗?@user是的,有意义——这是最好的方式。
    $_SESSION['userAgent']=$_SERVER['HTTP_USER_AGENT']
    
    hash('sha512',$randomDataPostedByUser)