5_1PHP安全及性能優(yōu)化_第1頁(yè)
5_1PHP安全及性能優(yōu)化_第2頁(yè)
5_1PHP安全及性能優(yōu)化_第3頁(yè)
5_1PHP安全及性能優(yōu)化_第4頁(yè)
5_1PHP安全及性能優(yōu)化_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1PHP安全及性能優(yōu)化2本周內(nèi)容vPHP安全vPHP性能優(yōu)化3PHP安全v輸入驗(yàn)證v跨站點(diǎn)腳本阻止vSQL注入v代碼注入v命令注入vSession安全v文件訪問安全v沙盒4輸入驗(yàn)證v輸入驗(yàn)證v正則表達(dá)式vSanitizing 和 Logical過濾器v清理輸入字符串5跨站點(diǎn)腳本攻擊阻止v拒絕特殊字符v利用HTTP-only Cookie解決XSSv使用filter_xss()阻止跨站點(diǎn)腳本攻擊6SQL注入v引號(hào)使用v預(yù)編譯語句vLike使用vSQL錯(cuò)誤處理v其它風(fēng)險(xiǎn)7代碼注入v路徑校驗(yàn)v使用全路徑v避免動(dòng)態(tài)路徑v驗(yàn)證文件名v其它代碼注入風(fēng)險(xiǎn)8命令注入v通過命令注入使資源衰竭v路徑使用v隱含威脅

2、9Session安全v服務(wù)器端的弱點(diǎn)vURL SessionvSession鼓動(dòng)v本地保護(hù)機(jī)制v服務(wù)器端過期機(jī)制v加密Session超出v基于IP的驗(yàn)證10文件訪問安全v加密讀權(quán)限v加密寫權(quán)限v上載文件現(xiàn)值v文件前面v安全模式vPHP編碼v根目錄管理11沙盒v使用沙盒誤導(dǎo)攻擊v編譯沙盒vIP地址限制v路由信息12PHP性能優(yōu)化vPHP代碼人工優(yōu)化v使用優(yōu)化工具優(yōu)化代碼v頁(yè)面文件壓縮輸出vMysql緩存優(yōu)化配置v數(shù)據(jù)庫(kù)優(yōu)化13PHP代碼人工優(yōu)化(一)v方法可靜態(tài)化,速率可提升至 4 倍v使用echo而不是printv使用 echo 的多重參數(shù),而不是字符串連接。v便利數(shù)組時(shí)foreach比whi

3、le大約快20%-30%左右。v注銷那些不用的變量尤其是大數(shù)組,以便釋放內(nèi)存。v盡量避免使用 _get,_set,_autoload。v在包含文件時(shí)使用完整路徑,解析操作系統(tǒng)路徑所需的時(shí)間會(huì)更少。v函數(shù)代替正則表達(dá)式完成相同功能14PHP代碼人工優(yōu)化(二)v使用選擇分支語句(譯注:即 switch case)好于使用多個(gè) if,else if 語句。v用 屏蔽錯(cuò)誤消息的做法非常低效。 v打開 apache 的 mod_deflate 模塊。v數(shù)據(jù)庫(kù)連接當(dāng)使用完畢時(shí)應(yīng)關(guān)掉。v$rowid 的效率是 $rowid 的 7 倍。v錯(cuò)誤消息代價(jià)昂貴。v盡量不要在 for 循環(huán)中使用函數(shù),比如 for(

4、$x=0; $x prop+)要比遞增一個(gè)局部變量慢 3 倍。v遞增一個(gè)未預(yù)定義的局部變量要比遞增一個(gè)預(yù)定義的局部變量慢 9 至 10 倍。v僅定義一個(gè)局部變量而沒在函數(shù)中調(diào)用它,同樣會(huì)減慢速度(其程度相當(dāng)于遞增一個(gè)局部變量)。PHP 大概會(huì)檢查看是否存在全局變量。16PHP代碼人工優(yōu)化(四)v 方法調(diào)用看來與類中定義的方法的數(shù)量無關(guān),因?yàn)槲遥ㄔ跍y(cè)試方法之前和之后都)添加了 10 個(gè)方法,但性能上沒有變化。v 派生類中的方法運(yùn)行起來要快于在基類中定義的同樣的方法。v 調(diào)用帶有一個(gè)參數(shù)的空函數(shù),其花費(fèi)的時(shí)間相當(dāng)于執(zhí)行 7 至 8 次的局部變量遞增操作。類似的方法調(diào)用所花費(fèi)的時(shí)間接近于 15 次的

5、局部變量遞增操作。v 用單引號(hào)代替雙引號(hào)來包含字符串,這樣做會(huì)更快一些。因?yàn)?PHP 會(huì)在雙引號(hào)包圍的字符串中搜尋變量,單引號(hào)則不會(huì)。當(dāng)然,只有當(dāng)你不需要在字符串中包含變量時(shí)才可以這么做。v 輸出多個(gè)字符串時(shí),用逗號(hào)代替句點(diǎn)來分隔字符串,速度更快。注意:只有 echo 能這么做,它是一種可以把多個(gè)字符串當(dāng)作參數(shù)的“函數(shù)”(譯注:PHP 手冊(cè)中說 echo 是語言結(jié)構(gòu),不是真正的函數(shù),故把函數(shù)加上了雙引號(hào))。17PHP代碼人工優(yōu)化(五)v Apache 解析一個(gè) PHP 腳本的時(shí)間要比解析一個(gè)靜態(tài) HTML 頁(yè)面慢 2 至 10 倍。盡量多用靜態(tài) HTML 頁(yè)面,少用腳本。v 除非腳本可以緩存,

6、否則每次調(diào)用時(shí)都會(huì)重新編譯一次。引入一套PHP緩存機(jī)制通??梢蕴嵘?25% 至 100% 的性能,以免除編譯開銷。v 盡量做緩存,可使用 memcached。memcached 是一款高性能的內(nèi)存對(duì)象緩存系統(tǒng),可用來加速動(dòng)態(tài) Web 應(yīng)用程序,減輕數(shù)據(jù)庫(kù)負(fù)載。對(duì)運(yùn)算碼 (OP code) 的緩存很有用,使得腳本不必為每個(gè)請(qǐng)求做重新編譯。v 并不是事必面向?qū)ο?(OOP),面向?qū)ο笸_銷很大,每個(gè)方法和對(duì)象調(diào)用都會(huì)消耗很多內(nèi)存。v 并非要用類實(shí)現(xiàn)所有的數(shù)據(jù)結(jié)構(gòu),數(shù)組也很有用。18PHP代碼人工優(yōu)化(六)v不要把方法細(xì)分得過多,仔細(xì)想想你真正打算重用的是哪些代碼?v盡量采用大量的 PHP 內(nèi)置函

7、數(shù)。v如果在代碼中存在大量耗時(shí)的函數(shù),你可以考慮用 C 擴(kuò)展的方式實(shí)現(xiàn)它們。v評(píng)估檢驗(yàn) (profile) 你的代碼。檢驗(yàn)器會(huì)告訴你,代碼的哪些部分消耗了多少時(shí)間。Xdebug 調(diào)試器包含了檢驗(yàn)程序,評(píng)估檢驗(yàn)總體上可以顯示出代碼的瓶頸。vmod_zip 可作為 Apache 模塊,用來即時(shí)壓縮你的數(shù)據(jù),并可讓數(shù)據(jù)傳輸量降低 80%。 v我想要完成的任何事情 19使用優(yōu)化工具優(yōu)化代碼vzend optimizer工具的使用20頁(yè)面文件壓縮輸出vHtml頁(yè)面、JavaScript、CSS文件壓縮輸出v使用Apache2的mod_deflate模塊21MySql緩存優(yōu)化配置v使用動(dòng)態(tài)緩存v使用靜態(tài)緩存v使用緩存工具eAccelerator、APC、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論