本人剛剛畢業(yè),目前在一個(gè)外包公司做最基礎(chǔ)的代碼開(kāi)發(fā),用的是thinkphp5.
昨天老大說(shuō)是要更新我們以前自己開(kāi)發(fā)的用來(lái)加快進(jìn)度的后臺(tái),而他的思想就是把thinkphp的model全部去掉,用DB類做代替,而且要用一個(gè)通用的方法取代90%庫(kù)的增刪改查,有一些確實(shí)需要寫的邏輯類的代碼,就建立一個(gè)*model的文件寫進(jìn)去,但是不繼承thinkphp的Model類,也就是只是一個(gè)叫做model的普通類。
后來(lái)我想了一下,確實(shí),以前我們寫Model有時(shí)候僅僅是簡(jiǎn)單的建立一個(gè)文件,把一些必要的代碼寫進(jìn)去就算完事,而這樣的話完全可以用Db去代替所以,mvc的存在對(duì)于我們這些開(kāi)發(fā)一些說(shuō)大不大,說(shuō)小還挺費(fèi)時(shí)間的人員來(lái)說(shuō),mvc到底存在什么意義?
還有一個(gè)問(wèn)題就是,按照老大的想法,前端需要數(shù)據(jù)的時(shí)候,需要將他們想查的表的表名以及條件還有字段什么的全部傳過(guò)來(lái),我對(duì)安全這方面不是很懂,但是以前好像看過(guò)一些安全方面的資料說(shuō)是在安全審計(jì)方面有專業(yè)的工具就是猜表名,猜字段。我們這樣直接把表名字段暴露出去是否會(huì)有安全隱患?還是我想多了?
MVC成功的分離開(kāi)了數(shù)據(jù),邏輯以及界面。
想象一下,如果這三者不分離,項(xiàng)目組里美工得學(xué)編程,程序員得學(xué)數(shù)據(jù)庫(kù),DBA得學(xué)編程,是不是時(shí)間消耗增加,效率下降?
但如果分離開(kāi)來(lái),
DBA專心設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),寫完丟進(jìn)model
美工專心設(shè)計(jì)界面,設(shè)計(jì)好了丟進(jìn)view
程序員專心寫程序,寫完丟進(jìn)controller
三撥人可以幾乎不互相依賴地異步開(kāi)發(fā),而不會(huì)像傳統(tǒng)模式,需要數(shù)據(jù)庫(kù)更新結(jié)構(gòu),于是邏輯得改,但邏輯一改還得通知美工把表單更新了,這樣就會(huì)卡在等待其中一個(gè)人上。
還有就是再次修改的時(shí)候不容易被混在一起的模型視圖控制器搞暈
樓主的問(wèn)題簡(jiǎn)單分為兩個(gè)問(wèn)題,并先給出簡(jiǎn)要結(jié)論,再做分析。
1 mvc 的意義,以及你們老大的方法的合理性
mvc 非常重要,除非你的代碼是用來(lái)“挖坑”的。但你老大的方法并非全錯(cuò),下面再做分析。
2 讓前端把表名發(fā)給后端。是否可行。
絕對(duì)不可行。暴露表名,無(wú)異于裸奔!
分析:
1) mvc 作用:解耦,解耦,解耦!
可以講編程的核心之一就是模塊化也就是解耦,更簡(jiǎn)單點(diǎn)說(shuō)就是:可維護(hù)性。如果你的代碼寫用了1星期,后續(xù)修改調(diào)試用了1個(gè)月。那不是給別人挖坑嗎?
但是在mvc 出來(lái)之前以及現(xiàn)在,還是有很多程序員喜歡用直接拼接SQL 的方式來(lái)開(kāi)發(fā)的。這個(gè)也并不完全錯(cuò)誤。要看需求,以及只要你原則是:解耦,可維護(hù),就是可行的。對(duì)于TP 來(lái)講,如果你的系統(tǒng)確實(shí)很簡(jiǎn)單,你打算放棄 model 也可以把邏輯寫在 controler 也就是 action里面??傊潜匾?,還是按照mvc 的方式寫比較好。
2)關(guān)于數(shù)據(jù)庫(kù),你說(shuō)的猜數(shù)據(jù)庫(kù)信息其實(shí)就是 SQL 注入,利用程序漏洞,讓你的系統(tǒng)非法執(zhí)行某些 SQL 語(yǔ)句,從而暴力破解你的數(shù)據(jù)庫(kù)賬號(hào)密碼,然后逐步再獲得io權(quán)限,寫入非法腳本,提權(quán)獲得最高權(quán)限。 別人用SQL注入窮舉的方法暴力破解你的數(shù)據(jù)庫(kù),并不一定能掌握你數(shù)據(jù)庫(kù)的信息,而你直接把數(shù)據(jù)庫(kù)信息暴露出來(lái),那不是相當(dāng)于裸奔嗎? 正確的方法應(yīng)該是用 REST api
簡(jiǎn)單發(fā)表個(gè)人看法:
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。