最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Thinkphp5代碼審計(jì)(一)

2023-02-20 16:31 作者:J_Chanra  | 我要投稿

PS:上次文章篇幅太長(zhǎng),導(dǎo)致圖片發(fā)不全,這次把文章拆開(kāi)。。。。

簡(jiǎn)介

ThinkPHP5.0版本是一個(gè)顛覆和重構(gòu)版本,采用全新的架構(gòu)思想,引入了更多的PHP新特性,優(yōu)化了核心,減少了依賴,實(shí)現(xiàn)了真正的惰性加載,支持composer,并針對(duì)API開(kāi)發(fā)做了大量的優(yōu)化,包括路由、日志、異常、模型、數(shù)據(jù)庫(kù)、模板引擎和驗(yàn)證等模塊都已經(jīng)重構(gòu),不適合原有3.2項(xiàng)目的升級(jí)。

環(huán)境

注意:PHP5.4DEV和PHP6不支持運(yùn)行

開(kāi)始使用

將下載好的thinkphp放到web目錄下,訪問(wèn)url驗(yàn)證

如果瀏覽器輸出如圖所示,說(shuō)明安裝成功

hello world

找到/thinkphp_5.0.15/application/index/controller/Index.php

修改代碼如下

瀏覽器訪問(wèn)

顯示hello world

目錄結(jié)構(gòu)

運(yùn)行沒(méi)有問(wèn)題了,就來(lái)看下目錄結(jié)構(gòu)

如果已經(jīng)看了前面的thinkphp3的代碼審計(jì)文章或者視頻,那么一定會(huì)感到有點(diǎn)熟悉。沒(méi)看過(guò)也不要緊,這些只需要簡(jiǎn)單了解。

thinkphp5的MVC

Thinkphp是一個(gè)基于MVC的框架,簡(jiǎn)單看下MVC都做些什么

控制器Controller

每個(gè)模塊擁有獨(dú)立的MVC類(lèi)庫(kù)及配置文件,一個(gè)模塊下面有多個(gè)控制器負(fù)責(zé)響應(yīng)請(qǐng)求,而每個(gè)控制器其實(shí)就是一個(gè)獨(dú)立的控制器類(lèi)。

控制器主要負(fù)責(zé)請(qǐng)求的接收,并調(diào)用相關(guān)的模型處理,并最終通過(guò)視圖輸出。嚴(yán)格來(lái)說(shuō),控制器不應(yīng)該過(guò)多的介入業(yè)務(wù)邏輯處理。

模型Model

模型類(lèi)通常完成實(shí)際的業(yè)務(wù)邏輯和數(shù)據(jù)封裝,并返回和格式無(wú)關(guān)的數(shù)據(jù)。

視圖View

控制器調(diào)用模型類(lèi)后返回的數(shù)據(jù)通過(guò)視圖組裝成不同格式的輸出。視圖根據(jù)不同的需求,來(lái)決定調(diào)用模板引擎進(jìn)行內(nèi)容解析后輸出還是直接輸出

視圖通常會(huì)有一系列的模板文件對(duì)應(yīng)不同的控制器和操作方法,并且支持動(dòng)態(tài)設(shè)置模板目錄。

url模式

ThinkPHP5.0在沒(méi)有啟用路由的情況下典型的URL訪問(wèn)規(guī)則是

支持切換到命令行訪問(wèn),如果切換到命令行模式下面的訪問(wèn)規(guī)則是:

可以看到,無(wú)論是URL訪問(wèn)還是命令行訪問(wèn),都采用PATH_INFO訪問(wèn)地址,其中PATH_INFO的分隔符是可以設(shè)置的。

注意:5.0取消了URL模式的概念,并且普通模式的URL訪問(wèn)不再支持,但參數(shù)可以支持普通方式傳值

如果不支持PATHINFO的服務(wù)器可以使用兼容模式訪問(wèn)如下

URL大小寫(xiě)

默認(rèn)情況下,URL是不區(qū)分大小寫(xiě)的,也就是說(shuō)?URL里面的模塊/控制器/操作名會(huì)自動(dòng)轉(zhuǎn)換為小寫(xiě),控制器在最后調(diào)用的時(shí)候會(huì)轉(zhuǎn)換為駝峰法處理。

當(dāng)然也可以在配置文件中改為區(qū)分大小寫(xiě)

路由

個(gè)人認(rèn)為路由是給某些資源綁定了特殊的名字。開(kāi)發(fā)者預(yù)先設(shè)置好一些特殊的操作,并綁定對(duì)應(yīng)的uri,配置了路由后,用戶和開(kāi)發(fā)者訪問(wèn)某個(gè)uri,即可執(zhí)行預(yù)先設(shè)置的操作。

ThinkPHP5.0的路由支持三種方式的URL解析規(guī)則。

一、普通模式

關(guān)閉路由,完全使用默認(rèn)的PATH_INFO方式URL:

路由關(guān)閉后,不會(huì)解析任何路由規(guī)則,采用默認(rèn)的PATH_INFO?模式訪問(wèn)URL:

二、混合模式

開(kāi)啟路由,并使用路由定義+默認(rèn)PATH_INFO方式的混合

該方式下面,只需要對(duì)需要定義路由規(guī)則的訪問(wèn)地址定義路由規(guī)則,其它的仍然按照第一種普通模式的PATH_INFO模式訪問(wèn)URL。

三、強(qiáng)制模式

開(kāi)啟路由,并設(shè)置必須定義路由才能訪問(wèn):


如果未開(kāi)啟強(qiáng)制路由,那么可能會(huì)導(dǎo)致rce。本篇先了解下框架知識(shí),下一篇分析rce的原理。


Thinkphp5代碼審計(jì)(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
延长县| 浮山县| 黑水县| 新龙县| 潢川县| 阿拉善左旗| 丹江口市| 五莲县| 宁晋县| 长宁区| 丰顺县| 佛坪县| 法库县| 南华县| 广平县| 宝应县| 娄底市| 西宁市| 克山县| 太白县| 阿荣旗| 阜新| 临沧市| 镇江市| 云梦县| 获嘉县| 综艺| 延津县| 安乡县| 大同市| 电白县| 鄂尔多斯市| 胶州市| 中宁县| 清流县| 兴文县| 彭水| 南昌市| 湛江市| 中西区| 西乌珠穆沁旗|