5個(gè) PHP 安全措施_PHP教程

      編輯Tag賺U幣

      推薦:如何寫出好的 PHP 代碼?
      編寫良好的代碼是一種藝術(shù)。如果一個(gè)程序員遵循一些良好的編程習(xí)慣,那么他就可以成為一個(gè)優(yōu)秀的程序員。實(shí)際上,相對(duì)于你寫代碼的時(shí)間,你很可能會(huì)花更多的時(shí)間在代碼維護(hù)上;更不用說整個(gè)應(yīng)用程序的維護(hù)。建立良好的編碼習(xí)慣,能夠提高像模塊化這樣的設(shè)計(jì)因素,你的代

      PHP一直是一個(gè)穩(wěn)定的、廉價(jià)的運(yùn)行基于web應(yīng)用程序的平臺(tái)。像大多數(shù)基于web的平臺(tái)一樣,PHP也是容易受到外部攻擊的。
      開發(fā)人員、數(shù)據(jù)庫架構(gòu)師和系統(tǒng)管理員在部署PHP應(yīng)用程序到服務(wù)器之前都應(yīng)該采取預(yù)防措施。
      大部分預(yù)防措施可以通過幾行代碼或者把應(yīng)用程序設(shè)置稍作調(diào)整即可完成。

      #1:管理安裝腳本

      如果開發(fā)人員已經(jīng)安裝了一套第三方應(yīng)用程序的PHP腳本,該腳本用于安裝整個(gè)應(yīng)用程序的工作組件,并提供一個(gè)接入點(diǎn)。大多數(shù)第三方軟件包都建議在安裝后,刪除該目錄包含的安裝腳本。但開發(fā)人員希望保留安裝腳本,他們可以創(chuàng)建一個(gè).htaccess文件來控制管理訪問目錄。

      1. AuthType Basic 
      2. AuthName “Administrators Only” 
      3. AuthUserFile /usr/local/apache/passwd/passwords 
      4. Require valid-user 

      任何未經(jīng)授權(quán)的用戶,如果試圖訪問一個(gè)受保護(hù)的目錄,將會(huì)看到一個(gè)提示,要求輸入用戶名和密碼。密碼必須匹配指定的“passwords”文件中的密碼。

      #2:頭文件

      在很多情況下,開發(fā)人員可以將分布在應(yīng)用程序的幾個(gè)腳本包含進(jìn)一個(gè)腳本里。這些腳本將包含一個(gè)“include”指令,集成單個(gè)文件到原始頁面的代碼里。當(dāng)“include”文件包含敏感信息,包括用戶名、密碼和數(shù)據(jù)庫訪問密鑰時(shí),該文件的擴(kuò)展名應(yīng)該命名成“.php ",而不是典型的“.inc”擴(kuò)展。“.php”擴(kuò)展確保php引擎將處理該文件,并防止任何未經(jīng)授權(quán)的訪問。

      #3: MD5 vs. SHA

      在某些情況下,用戶最終會(huì)創(chuàng)建自己的用戶名和密碼,而站點(diǎn)管理員通常會(huì)對(duì)表單提交的密碼加密,并保存在數(shù)據(jù)庫中。在過去的幾年中,開發(fā)人員會(huì)使用MD5(消息摘要算法)函數(shù),加密成一個(gè)128位的字符串密碼。今天,很多開發(fā)人員使用SHA-1(安全散列算法)函數(shù)來創(chuàng)建一個(gè)160位的字符串。

      #4: 自動(dòng)全局變量

      php.ini文件中包含的設(shè)置稱為“register_globals”。P服務(wù)器會(huì)根據(jù)register_globals的設(shè)置,將會(huì)為服務(wù)器變量和查詢字符串自動(dòng)創(chuàng)建全局變量。在安裝第三方的軟件包時(shí),比如內(nèi)容管理軟件,像Joomla和Drupal,安裝腳本將引導(dǎo)用戶把register_globals設(shè)置為“關(guān)閉”。將設(shè)置改變?yōu)?ldquo;關(guān)閉”可以確保未經(jīng)授權(quán)的用戶無法通過猜測(cè)變量名稱及驗(yàn)證密碼來訪問數(shù)據(jù)。

      #5: 初始化變量和值

      許多開發(fā)人員都落入了實(shí)例化變量不賦值的陷阱,原因可能由于時(shí)間的限制而分心,或缺乏努力。身份驗(yàn)證過程中的變量,應(yīng)該在用戶登錄程序開始前就有值。這個(gè)簡(jiǎn)單的步驟可以防止用戶繞過驗(yàn)證程序或訪問站點(diǎn)中某些他們沒有權(quán)限的區(qū)域。

      分享:php調(diào)試?yán)?/a>
      如果我們想知道某個(gè)方法被誰調(diào)用了? debug_print_backtrace可以解決!~ 測(cè)試代碼: ?php class a{ function say( $msg ){ echo msg: . $msg ; echo pre ;debug_print_backtrace(); } } class b{ function say( $msg ){ $a = new a(); $a -say( $msg ); } } class c{ func

      來源:未知//所屬分類:PHP教程/更新時(shí)間:2012-07-25
      相關(guān)PHP教程