php core 關(guān)閉是指某些 PHP 函數(shù)在特定情況下停用某些核心功能。有些常用的函數(shù)在多年來(lái)的 PHP 版本更改中已被關(guān)閉。一些被關(guān)閉的函數(shù)可能導(dǎo)致安全問(wèn)題或?qū)ο到y(tǒng)造成潛在風(fēng)險(xiǎn)。在本篇文章中,我們將探討 php core 關(guān)閉及其影響。
一個(gè)典型的例子是 register_globals。在 PHP4 中,PHP 的默認(rèn)設(shè)置允許開(kāi)發(fā)人員使用 register_globals 函數(shù),從而可以直接引用 GET、POST 和 COOKIES 變量而不必進(jìn)行顯式聲明。但是,這會(huì)導(dǎo)致安全漏洞,因?yàn)槲唇?jīng)檢查的變量可以訪(fǎng)問(wèn)全局作用域,從而可能被惡意利用來(lái)進(jìn)行攻擊或注入惡意代碼。為此,在 PHP5 及更高版本中已經(jīng)完全禁用了 register_globals。
// PHP 5 及以上版本中 register_globals 已關(guān)閉 if(isset($_GET['example'])) { $example = $_GET['example']; }
當(dāng)我們從 PHP 5 版本升級(jí)到 PHP 7 時(shí),我們會(huì)發(fā)現(xiàn)一些變化。例如,在 PHP 7 中,我們不能再使用下劃線(xiàn)將數(shù)字字面量分隔開(kāi)。在 PHP 5 中,我們可以使用下劃線(xiàn)將更大數(shù)字劃分為更可讀的部分。但是,在 PHP 7 中,這已經(jīng)被關(guān)閉了。
// PHP 7 中不再允許使用下劃線(xiàn)分隔數(shù)字字面量 $number = 1_000_000;
還有一些經(jīng)典的函數(shù)在 PHP 7.1 中被關(guān)閉,包括 mcrypt_decrypt() 和 mcrypt_encrypt() 這兩個(gè)函數(shù)。這是因?yàn)樗鼈兪褂昧诉^(guò)時(shí)的 libmcrypt 庫(kù),這已經(jīng)被認(rèn)為是不安全的。此外,隨著 PHP 7.1 的發(fā)布,還關(guān)閉了一些被認(rèn)為是不安全的弱加密算法。
// 使用 7.1 外的 PHP 版本時(shí)可使用 mcrypt_decrypt() 和 mcrypt_encrypt() $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM); $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryption_key, $plaintext, MCRYPT_MODE_CBC, $iv);
從以上例子,我們可以看出關(guān)閉某些 PHP 函數(shù)的好處。這些關(guān)閉針對(duì)的是可能導(dǎo)致潛在安全風(fēng)險(xiǎn)和漏洞的功能,從而使我們能夠更安全地在 PHP 代碼中編寫(xiě)和部署應(yīng)用程序。
總結(jié)來(lái)說(shuō),php core 關(guān)閉是一個(gè)非常重要的話(huà)題。我們需要定期查看 PHP 官方文檔,以及時(shí)了解一些不再支持的函數(shù)、特性和常規(guī)行為。我們應(yīng)該盡量使用最新版本的 PHP 并更新舊的代碼,以便充分利用更新和安全的功能。