了解 PHP 中的 Register_Globals
PHP 的 register_globals 指令引發了有關其性質和功能的問題。讓我們深入研究:
什麼是 Register_Globals?
Register_globals 是一個配置設置,可自動從 $_REQUEST 數組中的元素建立全域變數。提交表單時,可以在 PHP 腳本中存取變量,其名稱與輸入欄位的「name」屬性相對應。
例如,啟用 register_globals 且表單提交使用者名字段時,表達式 ($username = == $_POST['username']) 將評估為 true。
安全影響
Register_globals 會帶來重大的安全風險,因為它允許惡意使用者在未經適當驗證的情況下操縱變數。例如,透過將「?authorized=1」附加到 URL,攻擊者可以繞過授權檢查。
全域關鍵字區分
與 register_globals 不同,global 關鍵字允許在函數作用域之外聲明的變數可以在函數作用域內存取。全域變數必須使用 global 關鍵字明確聲明才能使用。
例如,以下程式碼使用全域 $foo 來存取在uzz()函數外部宣告的變數:
$foo = 'bar'; baz(); function baz() { echo $foo; // PHP warns about using an uninitialized variable } buzz(); function buzz() { global $foo; // Enables use of $foo in this scope echo $foo; // Prints 'bar' to screen }
以上是PHP 的 register_globals 指令是否有安全風險?的詳細內容。更多資訊請關注PHP中文網其他相關文章!