跳转到内容

网络应用程序安全指南/比较问题

来自维基教科书,开放的书籍,开放的世界

比较问题

比较值时,请了解您的编程语言的行为。例如,在 PHP 中,"==" 是一个宽松的比较,它忽略类型,并可能导致意外行为。 "===" 用于精确比较。使用错误类型的比较会导致安全问题。

为了防止比较问题

  • 了解编程语言中的比较类型,并使用正确的类型
  • 如有疑问(尤其是在 PHP 中),请使用严格比较(PHP: "===")
  • 比较字符串是否相等时,请确保您实际检查的是字符串是否相等,而不是一个字符串是否包含另一个字符串

基本原理

使用过于宽松的比较很容易导致安全问题。例如,在 PHP 中,以下将被评估为 TRUE

 "a97e8342f0" == 0

十六进制字符串,它可能是令牌或哈希值,会自动被解析为整数,并且由于它以字母开头,因此无法解析,结果为 0。

意外地检查字符串是否包含,而不是检查字符串是否相等,这可能允许攻击者绕过例如白名单检查。

华夏公益教科书