首頁 >後端開發 >PHP問題 >PHP常用函數的漏洞有哪些?

PHP常用函數的漏洞有哪些?

慕斯
慕斯原創
2021-06-18 16:19:112521瀏覽

上篇文章為大家介紹了《PHP中如何進行檔案上傳?我們需要注意什麼? 》,本文繼續跟大家介紹PHP常用函數的漏洞有哪些?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

PHP常用函數的漏洞有哪些?

PHP中常用函數的漏洞:

  • extract變數覆寫漏洞

  • extract函數:將變數從陣列匯入目前符號表。在某些mvc框架中會有它的蹤影

  • extract函數的定義: int extract(array,extract_ rules,prefix)

  • #extract0函數將檢查每個鍵名是否為合法的變數名,同時也檢查和符號表中已存在的變數名稱是否衝突。對不合法和衝突的鍵名的處理將根據此參數決定。

extract_rules :

  • #EXTR_ OVERWRITE -預設。如果有衝突,則覆蓋已有的變數。

  • EXTR_ SKIP -如果有衝突,不覆寫已有的變數。

  • EXTR_ PREFIX. SAME -如果有衝突.在變數名稱前加上前綴prefix.

  • EXTR_ PREFIX. ALL -給所有變數名加上前綴prefix.

  • EXTR_ PREFIX. INVALID -僅在不合法或數字變數名稱前加上前綴prefix.

  • EXTR_ IF. EXISTS -僅在當前符號表中已有同名變數時.覆寫它們的值。其它的都不處理。

  • EXTR_PREFIX_IF _EXISTS -僅在當前符號表中已有同名變數時.建立附加了前綴的變數名稱其它的都不處理。

  • EXTR_REFS -將變數作為引用提取。導入的變數仍然引用了數組參數的值。

我們以程式碼為例演示extract函數對目前覆蓋表的影響:

我們先建立一個文件,例如目前覆蓋表中有一個name,然後我們輸出這個變量,

<?php
$name = &#39;好久不见&#39;;
echo $name;
?>

程式碼結果如下:

PHP常用函數的漏洞有哪些?

#然後我們使用extract函數,然後我們定義一個數組,默然情況下是會覆蓋當前覆蓋表中的變量,也意味著我們剛剛寫的《好久不見》會被覆蓋掉,程式碼如下:

<?php
$name = &#39;好久不见&#39;;
extract(array(&#39;name&#39;=>&#39;再见&#39;));
echo $name;
?>

程式碼結果如下:

PHP常用函數的漏洞有哪些?

推薦學習:《PHP影片教學

以上是PHP常用函數的漏洞有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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