四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

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

一 前言 問題的存在
從代碼級別上,也就是應(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)生其他漏洞。如果這個變量用在了危險(xiǎ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ù)和變量,危險(xiǎn)的函數(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)容釋放出去做為全局變量,但是危險(xiǎn)可能更大,后面會提到。

php技術(shù)腳本安全的本質(zhì)_PHP+MYSQL第1/3頁,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 孽子 电影| 速度与激情10什么时候上映的| 红星闪闪歌词完整版打印| 电影白蛇传| 燕郊在线| 抖音在线官网| 罪孽天使| 电影因果报应完整版观看| 10000个常用人名| 牧笛| 红色诗配画| 尹雪喜主演电影| 复仇者联盟4在线完整版观看| 社会主义道德原则| 爆操在线观看| 有栖花绯日剧免费观看| 彭丹主演的经典电影| 搬山道人| 光棍电影| kanako| 人民的名义演员名单表| 大奉打更人电视剧在线播放视频| 我,喜欢你演员表介绍| 奥特曼名字大全加图片| 早餐中国| 画魂 电影| 波多野结衣电影大全| 康瑞德家的男孩| 教育在线教育平台直播| 找到你 电影| 劳力士电话客服电话24小时| 青春正步走 电视剧| 告别信| 内蒙古通辽地图| 跟班服务| 混凝土结构设计规范gb50010-2020 | 军犬麦克斯| 一元二次不等式的例题100道| 轻佻寡妇电影| 火舞俪人 电影| 四查四看自我剖析材料|