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

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

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

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

這樣貌似是沒有問題的,但是滿足一定的條件的話還是可能出問題,假設(shè)register_globals為on的話,我們進(jìn)入全局的變量不只是$_GET 和$_POST吧!包括$_COOKIE和$_FILES以及$_SERVER都是會在全局?jǐn)?shù)組中產(chǎn)生變量的,通過上面的語句,我們提交一個 php?_SERVER[PHP_SELF]就可以覆蓋掉_SERVER數(shù)組,那么整個程序中的$_SERVER數(shù)組都是不可以相信的了。我也見過這樣寫的代碼:
復(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)鍵變量初始化之后,那么我們完全可以提交一個?$host=xxx.xxx.xxx.xxx這樣的東西覆蓋掉系統(tǒng)自己的數(shù)據(jù)庫初始化文件里的數(shù)據(jù)庫地址變量,然后就可以
4 變量感染
這個很容易理解,當(dāng)一個變量不安全的時(shí)候,與之有關(guān)的賦值等操作都是不安全的,譬如:
$id = $_GET[id];
..
$articleid = $id;
實(shí)際過程中可能沒有這么明顯,但是結(jié)果是一樣的,只要某個變量把敏感字符帶入不該帶的地方,那么就會產(chǎn)生威脅,不只是變量,不安全的函數(shù)會讓使用這個函數(shù)的所有代碼都變的不安全。

相關(guān)文章

  • 10個php函數(shù)實(shí)用卻不常見

    10個php函數(shù)實(shí)用卻不常見

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

    php類自動加載器實(shí)現(xiàn)方法

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

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

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

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

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

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

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

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

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

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

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

    PHP實(shí)現(xiàn)的簡單分頁類及用法示例

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

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

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

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

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

最新評論

乐平市| 天等县| 阿拉善左旗| 兰州市| 汶川县| 沙河市| 黄龙县| 邮箱| 常山县| 盐池县| 柞水县| 正阳县| 巩留县| 涿州市| 承德市| 孟津县| 明光市| 泰兴市| 固镇县| 汤原县| 岫岩| 黔西县| 洪雅县| 防城港市| 永福县| 汉川市| 上栗县| 兴隆县| 库车县| 曲松县| 新野县| 沙河市| 郴州市| 华亭县| 青岛市| 张家川| 金门县| 龙胜| 宁陵县| 栖霞市| 武宣县|