最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

腳本安全的本質(zhì)_PHP+MYSQL第2/3頁(yè)

 更新時(shí)間:2008年10月03日 20:21:00   作者:  
從代碼級(jí)別上,也就是應(yīng)用層次上考慮代碼安全的話(也就是不考慮底層的語(yǔ)言本身等問(wèn)題的漏洞),腳本安全問(wèn)題就是函數(shù)和變量的問(wèn)題。

2 隱式的輸入
上面這些是最原始的,沒(méi)有經(jīng)過(guò)程序轉(zhuǎn)換的數(shù)據(jù),程序很多地方用到的變量都來(lái)自這里,但也不表示其他的地方?jīng)]有變量傳遞過(guò)來(lái),下面有一個(gè)數(shù)據(jù)傳遞的模式:
用戶傳遞的數(shù)據(jù)===========>數(shù)據(jù)庫(kù)===========>程序代碼處理=======>程序代碼
這個(gè)模式的意思是用戶的輸入可能先進(jìn)入了數(shù)據(jù)庫(kù),然后程序從數(shù)據(jù)庫(kù)再取得這個(gè)輸入送入某些危險(xiǎn)的函數(shù)執(zhí)行,一般的程序員都會(huì)有一個(gè)意識(shí)認(rèn)為從數(shù)據(jù)庫(kù)中取得的變量是安全的,但是事實(shí)并不如此,只要某些敏感字符最終送入到程序代碼中,不管他中間停留在什么地方,都是危險(xiǎn)的。與存儲(chǔ)在數(shù)據(jù)庫(kù)中類(lèi)似的情況是,一些程序把用戶的輸入放到文件中,如緩存文件,然后在必要的時(shí)候從里面取得,如果太過(guò)相信這些地方來(lái)的變量,這樣還是會(huì)導(dǎo)致問(wèn)題的。
3 變量覆蓋
還有很多的時(shí)候,程序收到的變量很可能來(lái)自他不應(yīng)該來(lái)的地方,譬如Dz的代碼:
$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}
這樣之后,你還覺(jué)得$_FILES是原來(lái)的$_FILES了么?如果我們建立一個(gè)_FILES的表單或者干脆在url里加上 php?_FILES[]=ddddd,這樣之后$_FILES已經(jīng)完全被覆蓋了,然后你代碼里引用的$_FILES就不是原來(lái)的了,在Dz以前的版本中曾經(jīng)出現(xiàn)過(guò)這個(gè)問(wèn)題。這應(yīng)該屬于變量覆蓋的問(wèn)題,把初始化的那個(gè)文件放大來(lái)看看吧:
復(fù)制代碼 代碼如下:

$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}
$charset = $dbcharset = '';
$plugins = $hooks = array();
require_once DISCUZ_ROOT.'./config.inc.php';
require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
if($attackevasive) {
require_once DISCUZ_ROOT.'./include/security.inc.php';
}

這樣貌似是沒(méi)有問(wèn)題的,但是滿足一定的條件的話還是可能出問(wèn)題,假設(shè)register_globals為on的話,我們進(jìn)入全局的變量不只是$_GET 和$_POST吧!包括$_COOKIE和$_FILES以及$_SERVER都是會(huì)在全局?jǐn)?shù)組中產(chǎn)生變量的,通過(guò)上面的語(yǔ)句,我們提交一個(gè) php?_SERVER[PHP_SELF]就可以覆蓋掉_SERVER數(shù)組,那么整個(gè)程序中的$_SERVER數(shù)組都是不可以相信的了。我也見(jiàn)過(guò)這樣寫(xiě)的代碼:
復(fù)制代碼 代碼如下:

require_once ROOT_PATH.'inc/database_config.php';
require_once
ROOT_PATH.'inc/dv_spacemain.php';
if(PHP_VERSION < '4.1.0') {
$_GET = &$HTTP_GET_VARS;
$_POST = &$HTTP_POST_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;
$_SESSION =& $HTTP_SESSION_VARS;
}
$magic_quotes_gpc = get_magic_quotes_gpc();
$register_globals = @ini_get('register_globals');
if(!$register_globals || !$magic_quotes_gpc) {
@extract(i_addslashes($_POST));
@extract(i_addslashes($_GET));
@extract(i_addslashes($_COOKIE));
if(!$magic_quotes_gpc) {
$_FILES = i_addslashes($_FILES);
}
}

同樣是在系統(tǒng)初始化的地方,但是變量的釋放是在
require_once ROOT_PATH.'inc/general_funcs.php';
require_once ROOT_PATH.'inc/dv_spacemain.php';
這些關(guān)鍵變量初始化之后,那么我們完全可以提交一個(gè)?$host=xxx.xxx.xxx.xxx這樣的東西覆蓋掉系統(tǒng)自己的數(shù)據(jù)庫(kù)初始化文件里的數(shù)據(jù)庫(kù)地址變量,然后就可以
4 變量感染
這個(gè)很容易理解,當(dāng)一個(gè)變量不安全的時(shí)候,與之有關(guān)的賦值等操作都是不安全的,譬如:
$id = $_GET[id];
..
$articleid = $id;
實(shí)際過(guò)程中可能沒(méi)有這么明顯,但是結(jié)果是一樣的,只要某個(gè)變量把敏感字符帶入不該帶的地方,那么就會(huì)產(chǎn)生威脅,不只是變量,不安全的函數(shù)會(huì)讓使用這個(gè)函數(shù)的所有代碼都變的不安全。

相關(guān)文章

  • 10個(gè)php函數(shù)實(shí)用卻不常見(jiàn)

    10個(gè)php函數(shù)實(shí)用卻不常見(jiàn)

    函數(shù)是PHP如此強(qiáng)大的源泉,但是很多PHP函數(shù)并沒(méi)有得到充分的利用。這里,我們給大家簡(jiǎn)單介紹10個(gè)不常見(jiàn),但非常有用的函數(shù)。
    2015-10-10
  • php類(lèi)自動(dòng)加載器實(shí)現(xiàn)方法

    php類(lèi)自動(dòng)加載器實(shí)現(xiàn)方法

    這篇文章主要介紹了php類(lèi)自動(dòng)加載器實(shí)現(xiàn)方法,涉及php針對(duì)文件的讀取、判斷及字符串操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • php通過(guò)curl方式實(shí)現(xiàn)發(fā)送接收xml數(shù)據(jù)

    php通過(guò)curl方式實(shí)現(xiàn)發(fā)送接收xml數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了php如何通過(guò)curl方式實(shí)現(xiàn)發(fā)送接收xml數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • php出現(xiàn)Cannot modify header information問(wèn)題的解決方法大全

    php出現(xiàn)Cannot modify header information問(wèn)題的解決方法大全

    我做了一個(gè)統(tǒng)一的出錯(cuò)提示函數(shù),在函數(shù)執(zhí)行里面,先處理出錯(cuò)的地址寫(xiě)入cookie以方便用戶登陸以后可以直接跳轉(zhuǎn)到要執(zhí)行的這個(gè)頁(yè)面,可是發(fā)現(xiàn)在服務(wù)器上測(cè)試時(shí),竟然提示本地沒(méi)有出現(xiàn)的錯(cuò)誤: Warning: Cannot modify header information - headers already sent by....
    2008-04-04
  • php通過(guò)array_unshift函數(shù)添加多個(gè)變量到數(shù)組前端的方法

    php通過(guò)array_unshift函數(shù)添加多個(gè)變量到數(shù)組前端的方法

    這篇文章主要介紹了php通過(guò)array_unshift函數(shù)添加多個(gè)變量到數(shù)組前端的方法,涉及php中array_unshift函數(shù)操作數(shù)組的使用技巧,需要的朋友可以參考下
    2015-03-03
  • php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類(lèi)

    php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類(lèi)

    這篇文章主要介紹了php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類(lèi)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • PHP學(xué)習(xí)筆記之二

    PHP學(xué)習(xí)筆記之二

    PHP學(xué)習(xí)筆記之二,開(kāi)始學(xué)習(xí)php的朋友可以看下。
    2011-01-01
  • PHP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)類(lèi)及用法示例

    PHP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)類(lèi)及用法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)類(lèi)及用法,結(jié)合實(shí)例形式分析的PHP分頁(yè)類(lèi)的功能、定義與具體使用技巧,需要的朋友可以參考下
    2016-05-05
  • php進(jìn)程間通訊實(shí)例分析

    php進(jìn)程間通訊實(shí)例分析

    這篇文章主要介紹了php進(jìn)程間通訊的方法,結(jié)合實(shí)例形式分析了php基于unix/linux平臺(tái)的信號(hào)量機(jī)制實(shí)現(xiàn)進(jìn)程間通訊的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • 用php+javascript實(shí)現(xiàn)二級(jí)級(jí)聯(lián)菜單的制作

    用php+javascript實(shí)現(xiàn)二級(jí)級(jí)聯(lián)菜單的制作

    二級(jí)級(jí)聯(lián)菜單在我去年的時(shí)候就用asp+js做過(guò),而現(xiàn)在忽然拿出來(lái)再做的時(shí)候我發(fā)現(xiàn)我忘記了,而且原來(lái)用asp寫(xiě)的程序都找不到了,真暈[emot]sweat[/emot],于是到網(wǎng)上搜,找了半天,我發(fā)現(xiàn)網(wǎng)上的寫(xiě)法各異,而且都特別復(fù)雜,這么一個(gè)二級(jí)級(jí)聯(lián)菜單,有必要弄這么復(fù)雜嗎?于是自己想重新寫(xiě)一個(gè)簡(jiǎn)單的。在經(jīng)過(guò)半個(gè)小時(shí)左右的思考后,我完成了二級(jí)級(jí)聯(lián)菜單的設(shè)計(jì)和制作。
    2008-05-05

最新評(píng)論

秭归县| 棋牌| 玛多县| 门头沟区| 济南市| 怀安县| 班玛县| 石阡县| 邵阳市| 松原市| 卓尼县| 延安市| 安岳县| 虹口区| 九台市| 隆昌县| 安庆市| 石屏县| 莱阳市| 改则县| 东乡县| 江孜县| 白山市| 彭州市| 五台县| 上犹县| 精河县| 泗洪县| 濮阳市| 岐山县| 竹北市| 清苑县| 抚松县| 平湖市| 平顶山市| 蕲春县| 凤冈县| 阿图什市| 喀喇沁旗| 台北市| 卢龙县|