網路應用程式安全指南/比較問題
外觀
比較值時,請了解您的程式語言的行為。例如,在 PHP 中,"==" 是一個寬鬆的比較,它忽略型別,並可能導致意外行為。 "===" 用於精確比較。使用錯誤型別的比較會導致安全問題。
為了防止比較問題
- 瞭解程式語言中的比較型別,並使用正確的型別
- 如有疑問(尤其是在 PHP 中),請使用嚴格比較(PHP: "
===") - 比較字串是否相等時,請確保您實際檢查的是字串是否相等,而不是一個字串是否包含另一個字串
基本原理
使用過於寬鬆的比較很容易導致安全問題。例如,在 PHP 中,以下將被評估為 TRUE
"a97e8342f0" == 0
十六進位制字串,它可能是令牌或雜湊值,會自動被解析為整數,並且由於它以字母開頭,因此無法解析,結果為 0。
意外地檢查字串是否包含,而不是檢查字串是否相等,這可能允許攻擊者繞過例如白名單檢查。