




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——重新認(rèn)識PHP框架重新熟悉PHP框架
有好多我們已經(jīng)熟悉和了解的東西,有時候又會帶給我們不一樣的感覺,以下是我用心為大家整理的PHP框架的重新熟悉,從一個全新的角度來詮釋PHP框架。更多內(nèi)容請關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!
有人認(rèn)為,PHP是每次苦求都要初始化資源,這個開銷分外大。由此,PHP不適合使用開發(fā)框架。對于PHP,切實沒有類的耐久化,使得每次苦求都要初始化資源,但是,這并不是開銷的主要問題所在。最主要的問題,是在于開發(fā)PHP框架的人,對PHP本身的特性了解多少。最簡樸的,MVC需要檢測UA,假設(shè)使用PHP自帶的get_browser函數(shù),那斷定是死定了。由于,使用上的便當(dāng)與簡樸,導(dǎo)致的是性能的開銷。認(rèn)為不成使用PHP開發(fā)框架的,還有的觀點是:由于需要每次苦求的時候初始化整個框架。其實,這也是一種曲解。假設(shè)好好看看PHP源碼,就會了解,PHP是按苦求加載需要運行的文件,并不是整個框架。所以,對于框架本身,哪一種框架內(nèi)核代碼時越小,性能越好。
還有觀點:由于PHP這種每苦求初始化資源的機制,也造成了PHP添加跨苦求的高級特性相當(dāng)困難。其實,跨苦求本身,要看在哪一個層面。PHP供給了各類加速的緩存機制。雖然PHP的類是由于目前序列化函數(shù)仍有限制,不能耐久化,但數(shù)據(jù)緩存對PHP的加速是相當(dāng)快的。所以,認(rèn)為由于這一限制,就使得PHP只能是一個保持在一個對比簡樸的web語言上面,這無疑更是錯誤的。PHP不乏大型的高速與高效的網(wǎng)站。并不是這些網(wǎng)站底層就沒有框架。
另外,還有輕信什么測試的結(jié)果。對于測試結(jié)果,我覺得,沒有一絲一毫的可信度。我們無法相信這些測試結(jié)果,主要理由有這么幾個方面。其一,PHP環(huán)境配置,是不是最優(yōu)化配置?其次,測試結(jié)果中所選框架,是不是最優(yōu)框架?僅拿CI與CAKE兩者來說,CI的日志,沒有多種輸出,只有文件輸出。這對于大型網(wǎng)站的管理是極不便當(dāng)?shù)摹5牵僭O(shè)將其改用LOG4PHP,那性能上的損失將會是多少,是不成想象的。理由在于,LOG4PHP是完全照抄的Java。至于CAKE,更是完全照抄RAILS。完全不顧及PHP的性能與語言本身的特性。譬如最簡樸的,大量靜態(tài)方法的使用。勢必造成以空間換時間。CAKE中無處不在的靜態(tài)方法,導(dǎo)致了內(nèi)存中聚積大量的類。這種以空間換時間,是速度加快了,還是性能損失了,有多少人真正系統(tǒng)測試過?CAKE讓RUBY的人了解PHP是對PHP的一個促進,同時,RAILS框架,也使得PHP框架得以注入新的血液,增加了新的開發(fā)思路。但,完全照抄是PHP目前最大的悲劇。這個當(dāng)中的經(jīng)典之作:CAKE:RUBYONRAILS,SMARTY:JavaSTRRUTSLOG4PHP:JAVALOG4J,可悲的是,寫這些抄襲之作的,都是對PHP不太了解,大量照搬RUBY,JAVA中的.算法與函數(shù),有些可以算是翻譯,譬如,LOG4PHP中的PROPERTIIES文件的處理就是這樣,不必再舉更多的實例了。為什么不能把JSF,或TYPESTRY也抄到PHP中,這是由于,假設(shè)沒有很好的PHP功底,這幾乎是不成能的。由于,這兩個東西,假設(shè)也是照抄過來,勢必慢如蝸牛。
再有,理想不用PHP框架開發(fā)大型網(wǎng)站,斷定是錯上加錯。WORDPRESS,DISCUZ這類無框架,無架構(gòu)的極端糟糕的代碼,網(wǎng)上已屢見不鮮。
要訪問數(shù)據(jù)庫,最小的需求,也要把數(shù)據(jù)庫訪問封裝成一個類吧?要舉行錯誤與奇怪管理,也需要一個類吧?假設(shè)是大型的網(wǎng)站,總要有錯誤日志輸出,以便當(dāng)調(diào)視與運行監(jiān)視吧。所以這些,拼一下,也算是PHP開發(fā)框架呀。
看樣子,否認(rèn)PHP應(yīng)當(dāng)有框架的人,斷定也就認(rèn)定,PHP做不了大網(wǎng)站。或者說,認(rèn)定,PHP做大網(wǎng)站,也是垃圾架構(gòu)。這可能是太武斷了。
凡認(rèn)為PHP是反框架的,實際上,是不了解PHP語言的一些瓶頸在何處,無法寫出高效的框架,所以,才這樣認(rèn)為的。
PHP安好編程建議
簡介
要供給互聯(lián)網(wǎng)服務(wù),當(dāng)你在開發(fā)代碼的時候務(wù)必時刻保持安好意識。可能大片面PHP腳本都對安好問題都不在意,這很大程度上是由于有大量的無閱歷程序員在使用這門語言。但是,沒有理由讓你由于對你的代碼的不確定性而導(dǎo)致不一致的安好策略。當(dāng)你在服務(wù)器上放任何涉及到錢的東西時,就有可能會有人嘗試破解它。創(chuàng)造一個論壇程序或者任何形式的購物車,被攻擊的可能性就上升到了無窮大。
背景
為了確保你的web內(nèi)容安好,這里有一些常規(guī)的安好準(zhǔn)那么:
別相信表單
攻擊表單很簡樸。通過使用一個簡樸的JavaScript技巧,你可以限制你的表單只允許在評分域中填寫1到5的數(shù)字。假設(shè)有人關(guān)閉了他們欣賞器的JavaScript功能或者提交自定義的表單數(shù)據(jù),你客戶端的驗證就失敗了。
用戶主要通過表單參數(shù)和你的腳本交互,因此他們是最大的安好風(fēng)險。你理應(yīng)學(xué)到什么呢?在PHP腳本中,總是要驗證傳遞給任何PHP腳本的數(shù)據(jù)。在本文中,我們向你演示了如何分析和防范跨站腳本XSS攻擊,它可能會劫持用戶憑據(jù)甚至更嚴(yán)重。你也會看到如何防止會玷污或毀壞你數(shù)據(jù)的MySQL注入攻擊。
別相信用戶
假定你網(wǎng)站獲取的每一份數(shù)據(jù)都彌漫了有害的代碼。清理每一片面,即便你相信沒有人會嘗試攻擊你的站點。
關(guān)閉全局變量
你可能會有的最大安好漏洞是啟用了register_globals配置參數(shù)。幸運的是,PHP4.2及以后版本默認(rèn)關(guān)閉了這個配置。假設(shè)開啟了register_globals,你可以在你的php.ini文件中通過變更register_globals變量為Off關(guān)閉該功能:
register_globals=Off
新手程序員覺得注冊全局變量很便當(dāng),但他們不會意識到這個設(shè)置有多么危害。一個啟用了全局變量的服務(wù)器會自動為全局變量賦任何形式的參數(shù)。為了了解它如何工作以及為什么有危害,讓我們來看一個例子。
假設(shè)你有一個稱為process.php的腳本,它會向你的數(shù)據(jù)庫插入表單數(shù)據(jù)。初始的表單像下面這樣:
運行process.php的時候,啟用了注冊全局變量的PHP會將該參數(shù)賦值到$username變量。這會比通過$_POST[username]或$_GET[username]訪問它節(jié)省擊鍵次數(shù)。不幸的是,這也會給你留下安好問題,由于PHP會設(shè)置該變量的值為通過GET或POST的參數(shù)發(fā)送到腳本的任何值,假設(shè)你沒有顯示地初始化該變量并且你不夢想任何人去操作它,這就會有一個大問題。
看下面的腳本,假使$authorized變量的值為true,它會給用戶顯示通過驗證的數(shù)據(jù)。正常處境下,只有當(dāng)用戶正確通過了這個假想的authenticated_user函數(shù)驗證,$authorized變量的值才會被設(shè)置為真。但是假設(shè)你啟用了register_globals,任何人都可以發(fā)送一個GET參數(shù),例如authorized=1去籠罩它:
//Define$authorized=trueonlyifuserisauthenticated
ifauthenticated_user
$authorized=true;
?
這個故事的寓意是,你理應(yīng)從預(yù)定義的服務(wù)器變量中獲取表單數(shù)據(jù)。全體通過post表單傳遞到你web頁面的數(shù)據(jù)都會自動保存到一個稱為$_POST的大數(shù)組中,全體的GET數(shù)據(jù)都保存在$_GET大數(shù)組中。文件上傳信息保存在一個稱為$_FILES的特殊數(shù)據(jù)中。另外,還有一個稱為$_REQUEST的復(fù)合變量。
要從一個POST方法表單中訪問username字段,可以使用$_POST[username]。假設(shè)username在URL中就使用$_GET[username]。假設(shè)你不確定值來自哪里,用$_REQUEST[username]。
$post_value=$_POST[post_value];
$get_value=$_GET[get_value];
$some_variable=$_REQUEST[some_value];
?
$_REQUEST是$_GET、$_POST、和$_COOKIE數(shù)組的結(jié)合。假設(shè)你有兩個或多個值有一致的參數(shù)名稱,留神PHP會使用哪個。默認(rèn)的依次是cookie、POST、然后是GET。
推舉安好配置選項
這里有幾個會影響安好功能的PHP配置設(shè)置。下面是一些鮮明理應(yīng)用于生產(chǎn)服務(wù)器的:
register_globals設(shè)置為off
safe_mode設(shè)置為off
error_reporting設(shè)置為off。假設(shè)展現(xiàn)錯誤了,這會向用戶欣賞器發(fā)送可見的錯誤報告信息。對于生產(chǎn)服務(wù)器,使用錯誤日志代替。開發(fā)服務(wù)器假設(shè)在防火墻后面就可以啟用錯誤日志。LCTT譯注:此處據(jù)原文規(guī)律和常識,理應(yīng)是"開發(fā)服務(wù)器假設(shè)在防火墻后面就可以啟用錯誤報告,即on。'
停用這些函數(shù):system、exec、passthru、shell_exec、proc_open、和popen。
open_basedir為/tmp以便保存會話信息目次和web根目次,以便腳本不能訪問這些選定區(qū)域外的文件。
expose_php設(shè)置為off。該功能會向Apache頭添加包含版本號的PHP簽名。
allow_url_fopen設(shè)置為off。假設(shè)你能夠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 呼和浩特市新城區(qū)公益性崗位招聘筆試真題2024
- 江蘇蘇州工業(yè)園區(qū)教育系統(tǒng)招聘教育人才筆試真題2024
- 歷史城市文化傳承規(guī)劃基礎(chǔ)知識點歸納
- 極地地區(qū)教學(xué)設(shè)計
- 綠色金融產(chǎn)融合作中面臨的主要問題及挑戰(zhàn)
- 高效行政工作總結(jié)
- 高中生物跨學(xué)科教學(xué)中探究式學(xué)習(xí)的實施策略
- 發(fā)心理學(xué)論文
- 2025至2030年中國濾波器用鐵氧體磁芯行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國滌棉全線卡行業(yè)投資前景及策略咨詢報告
- 營維一體化SOP手冊(裝維、銷售、維系)
- FZ/T 93056-1999變形絲用筒管技術(shù)條件
- 第六章神經(jīng)系統(tǒng)
- 醫(yī)療不良事件報告表
- SA8000-2014社會責(zé)任績效委員會SPT組織架構(gòu)、職責(zé)和定期檢討及評審會議記錄
- 材料加工新技術(shù)與新工藝112課件
- 國開作業(yè)科研人員TRIZ技術(shù)創(chuàng)新方法應(yīng)用培訓(xùn)-單元測驗1(確定項目+描述項目)76參考(含答案)
- 企業(yè)安全生產(chǎn)網(wǎng)格化管理體系圖空白
- 焊接熱處理工藝卡
- 百日咳臨床研究進展PPT醫(yī)學(xué)課件
- 大型鋼網(wǎng)架整體提升施工工法
評論
0/150
提交評論