第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

extract()有什么問題?

extract()有什么問題?

最近,我在一些最差的PHP實踐中閱讀了此線程。在第二個答案中,有一個關(guān)于的使用的簡短討論extract(),我只是想知道所有有關(guān)的內(nèi)容。我個人使用它來切分給定的數(shù)組,例如$_GET或$_POST稍后在其中清理變量,因為它們已為我方便地命名。這是不好的做法嗎?這有什么風險?您對的使用extract()有何看法?
查看完整描述

3 回答

?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

我發(fā)現(xiàn)這只是一種不好的做法,因為它會導致許多變數(shù),將來的維護者(或您自己在幾周內(nèi))都不知道它們的來源??紤]這種情況:

extract($someArray); // could be $_POST or anything/* snip a dozen or more lines */echo $someVariable;

哪里$someVariable來的?誰能告訴?

我沒有看到這個問題,從他們開始在陣列中訪問的變量,所以你真的需要展示一個良好的情況下,使用extract()我認為這是值得的。如果您真的很擔心要輸入一些額外的字符,請執(zhí)行以下操作:

$a = $someLongNameOfTheVariableArrayIDidntWantToType;$a['myVariable'];

我認為這里有關(guān)安全性的評論有些夸張。該函數(shù)可以使用第二個參數(shù),該參數(shù)實際上可以使您對新創(chuàng)建的變量有相當好的控制,包括不覆蓋任何現(xiàn)有變量(EXTR_SKIP),僅覆蓋現(xiàn)有變量(因此您可以創(chuàng)建白名單)(EXTR_IF_EXISTS)或為變量添加前綴(EXTR_PREFIX_ALL)。


查看完整回答
反對 回復 2019-09-26
?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

快過來 人們指責工具而不是用戶。

這就像在反對,unlink()因為您可以使用它刪除文件。extract()是一項與其他功能相同的功能,請明智且負責地使用它。但是,不要聲稱它本身是不好的,那只是無知。


查看完整回答
反對 回復 2019-09-26
?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

風險是:不信任用戶的數(shù)據(jù),將其提取到當前符號表中意味著您的變量可能會被用戶提供的內(nèi)容覆蓋。

<?php
    $systemCall = 'ls -lh';
    $i = 0;

    extract($_GET);

    system($systemCall);

    do {
        print_r($data[$i];
        $i++;
    } while ($i != 3);?>

(一個荒謬的例子)

但是現(xiàn)在有一個惡意用戶猜測或知道了代碼調(diào)用:

yourscript.php?i=10&systemCall=rm%20-rf

代替

yourscript.php?data[]=a&data[]=b&data[]=c

現(xiàn)在,$ systemCall和$ i被覆蓋,導致腳本首先刪除數(shù)據(jù),然后掛起。


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關(guān)注
  • 812 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號