首頁  >  文章  >  後端開發  >  為什麼 REGISTER_GLOBALS 被認為是 PHP 中的安全噩夢?

為什麼 REGISTER_GLOBALS 被認為是 PHP 中的安全噩夢?

Barbara Streisand
Barbara Streisand原創
2024-10-26 05:36:02189瀏覽

Why is REGISTER_GLOBALS Considered a Security Nightmare in PHP?

REGISTER_GLOBALS:為什麼它被鄙視?

對於經常使用 PHP 的開發者來說,一提到 REGISTER_GLOBALS 就會引起一種本能的反應,就像遭遇了瘟疫一樣。但為什麼對這個特定的設定如此強烈的厭惡呢?

REGISTER_GLOBALS 的危險

REGISTER_GLOBALS 允許透過 GET 或 POST 傳遞的所有變數都可以作為腳本中的全域變數進行存取。這個看似無害的功能隱藏著一個隱藏的威脅。

存取 PHP 中未宣告的變數只會觸發警告,而不是錯誤。因此,這可能會滋生潛在的漏洞。

範例

考慮以下程式碼片段:

<code class="php"><?php
// $debug = true;
if ($debug) {
    echo "query: $query\n";
}
?></code>

如果$ query 沒有明確聲明,上面的程式碼將輸出名為「query 」的GET 或POST 變數的值,不會出現錯誤。雖然這可能不會立即構成威脅,但不幸的是,製作不當的 PHP 程式碼很常見。

在這種情況下,REGISTER_GLOBALS 可能會引入意想不到的副作用和安全漏洞,否則這些副作用和安全漏洞很容易表現為錯誤。

結論

雖然 REGISTER_GLOBALS 本質上不是惡意的,但它已被證明是 PHP 程式碼庫中安全和穩定性問題的一個重要原因。結果,它贏得了臭名昭著的聲譽,開發者一致同意將其視為賤民設定。

以上是為什麼 REGISTER_GLOBALS 被認為是 PHP 中的安全噩夢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn