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

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

 更新時間:2008年10月03日 20:21:00   作者:  
從代碼級別上,也就是應(yīng)用層次上考慮代碼安全的話(也就是不考慮底層的語言本身等問題的漏洞),腳本安全問題就是函數(shù)和變量的問題。
一 前言 問題的存在
從代碼級別上,也就是應(yīng)用層次上考慮代碼安全的話(也就是不考慮底層的語言本身等問題的漏洞),腳本安全問題就是函數(shù)和變量的問題。變量直接或者間接的接收用戶不安全的的輸入,由于php本身的特性,在php中更容易發(fā)現(xiàn)這種變量的混亂(很多php程序都用來定義以及初始化以及接收變量,可以直接在程序中使用$id這樣的變量,初始化完全由php的設(shè)置來完成,如果稍不注意,就可能導(dǎo)致變量的混亂從而導(dǎo)致攻擊)。
變量接收不安全的輸入之后,沒有做恰當(dāng)?shù)倪^濾又用在不同的地方,就可能造成不同的危害。如果直接進(jìn)入數(shù)據(jù)庫然后顯示給用戶就會導(dǎo)致跨站腳本攻擊,如果用在 sql語句中就可能導(dǎo)致 Sql注射攻擊,這幾種攻擊都是是與具體的腳本語言無關(guān)的,在各種腳本語言里都可能存在。由于php的變量很靈活,這些有害的變量如果用在一些邏輯語句中,就會導(dǎo)致關(guān)鍵代碼的跳過如身份驗(yàn)證失敗和跳過一些變量的初始化從而導(dǎo)致程序邏輯混亂而產(chǎn)生其他漏洞。如果這個變量用在了危險的函數(shù)如include等等當(dāng)中,當(dāng)然就會出現(xiàn)文件包含漏洞,出現(xiàn)在fopen函數(shù)里就會可能產(chǎn)生寫文件的漏洞,出現(xiàn)在mysql_query函數(shù)中就是 Sql注射漏洞,eval以及preg_replace中可能導(dǎo)致代碼的執(zhí)行,出現(xiàn)在htmlspecia函數(shù)中可能導(dǎo)致出錯而絕對路徑泄露 變量出現(xiàn)的環(huán)境決定了它可能的危害。
思考了問題的存在,那么如何從代碼級別上檢查這種漏洞呢?當(dāng)然熟悉熟悉php語言是最基本的,也應(yīng)該是抓住函數(shù)和變量,危險的函數(shù)里如果有變量那么請確定這個變量的來源,是否正確的初始化,初始化之后是否能被用戶注入敏感字符,在進(jìn)入函數(shù)前這些敏感的字符是否得到了徹底的清除。對于代碼審核工作的難點(diǎn)可能就在于對變量來源的確定,這需要對php特性以及你所審核的代碼的熟悉,但也并不是所有的變量的來源都清晰可見,可能一些初始化的代碼并沒有像想象中運(yùn)行,一些變量里的東西可能也來自于你并不想他來的地方,還有一些變量可能來自于數(shù)據(jù)庫或者系統(tǒng)的配置文件,但是很可能數(shù)據(jù)庫和配置文件在之前就已經(jīng)被修改,或者在后面不安全的操作了這些變量,這些變量也是不可相信的。下面我們就按照變量與函數(shù)的思路來思考腳本代碼的安全。
二 變量來自哪里?
1 顯示的輸入
叫變量來自哪里其實(shí)也就是說威脅來自哪里,只是從web上考慮的話,什么樣的網(wǎng)站最安全?很明顯,那些只提供靜態(tài)Html頁面的網(wǎng)站是最安全的,因?yàn)檫@樣的網(wǎng)站不與瀏覽者進(jìn)行任何交互,就好比打劫一個密不透風(fēng)的銀行,很難實(shí)現(xiàn),但是對于一個大的論壇或者腳本程序就不一樣了,你登陸的時候需要傳遞用戶名和密碼這些變量給服務(wù)器,甚至包括你登陸的Ip與瀏覽器等等都是程序抓取的對象,抓取一次與服務(wù)器交互的過程如發(fā)表帖子等等你就發(fā)現(xiàn)瀏覽器與服務(wù)器之間進(jìn)行的數(shù)據(jù)傳輸,你可能看得見的包括提交的表單,地址欄參數(shù)等等,你看不見的包括Cookie,Http頭都是提交數(shù)據(jù)也就是變量的地方。這些地方也是服務(wù)器處理數(shù)據(jù)最原始的入口。那么php程序是如何接受變量的呢?所有提交的變量都被php保存在了一些數(shù)組里,包括
$_GET
$_POST
$_COOKIE
$_FILES
$_SERVER
為了最初的方便與靈活,在php的設(shè)置里有這么個選項(xiàng)
register_globals
當(dāng)這個選項(xiàng)為on的時候,上面出現(xiàn)的那些變量都會成為$GLOBALS中的一員,在腳本中都不需要再取得就可以直接使用,并且以
variables_order
的順序覆蓋。很多程序考慮到了register_globals為off的情況,于是在程序初始化的時候使用如下的代碼:
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
這些代碼起到了register_globals的作用,作用也是將POST和GET的內(nèi)容釋放出去做為全局變量,但是危險可能更大,后面會提到。

相關(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)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    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ù)器上測試時,竟然提示本地沒有出現(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)菜單在我去年的時候就用asp+js做過,而現(xiàn)在忽然拿出來再做的時候我發(fā)現(xiàn)我忘記了,而且原來用asp寫的程序都找不到了,真暈[emot]sweat[/emot],于是到網(wǎng)上搜,找了半天,我發(fā)現(xiàn)網(wǎng)上的寫法各異,而且都特別復(fù)雜,這么一個二級級聯(lián)菜單,有必要弄這么復(fù)雜嗎?于是自己想重新寫一個簡單的。在經(jīng)過半個小時左右的思考后,我完成了二級級聯(lián)菜單的設(shè)計和制作。
    2008-05-05

最新評論

沙雅县| 米泉市| 水富县| 晋江市| 曲沃县| 阿荣旗| 奉节县| 独山县| 余江县| 日喀则市| 鄂伦春自治旗| 甘肃省| 丰宁| 南陵县| 元氏县| 肇州县| 来宾市| 盐边县| 德令哈市| 台前县| 龙州县| 龙里县| 道真| 阳朔县| 临沭县| 翁牛特旗| 孟津县| 南京市| 南皮县| 定边县| 姚安县| 商丘市| 马鞍山市| 化德县| 阳朔县| 泾阳县| 商南县| 静乐县| 兴义市| 青冈县| 呼和浩特市|