《PHP教程:YII Framework框架教程之安全方案詳解》要點:
本文介紹了PHP教程:YII Framework框架教程之安全方案詳解,希望對您有用。如果有疑問,可以聯系我們。
相關主題:YII框架
本文講述了YII Framework框架的平安方案.分享給大家供大家參考,具體如下:PHP實例
web應用的平安問題是很重要的,在“黑客”盛行的年代,你的網站可能明天都遭受著攻擊,為了從某種程度上防止被攻擊,YII提供了防止攻擊的幾種解決方案.當然這里講的平安是片面的,但是值得一看.PHP實例
官方提供的辦理方案有:如下PHP實例
1. 跨站腳本攻擊的防范PHP實例
跨站腳本攻擊(簡稱 XSS),即web應用從用戶收集用戶數據. 攻擊者常常向易受攻擊的web應用注入JavaScript,VBScript,ActiveX,HTML或 Flash來迷惑拜訪者以收集拜訪者的信息. 舉個例子,一個未經良好設計的論壇系統可能不經檢查就顯示用戶所輸入的內容. 攻擊者可以在帖子內容中注入一段惡意的JavaScript代碼. 這樣,當其他訪客在閱讀這個帖子的時候,這些JavaScript代碼就可以在訪客的電腦上運行了.PHP實例
一個防范XSS攻擊的最重要的措施之一就是:在顯示用戶輸入的內容之前進行內容檢查. 比如,你可以對內容中的HTML進行轉義處理.但是在某些情況下這種辦法就不可取了,因為這種辦法禁用了所有的HTML標簽.PHP實例
Yii集成了HTMLPurifier并且為開發者提供了一個很有用的組件CHtmlPurifier, 這個組件封裝了HTMLPurifier類.它可以將通過有效的審查、平安和白名單功能來把所審核的內容中的所有的惡意代碼清除掉,并且確保過濾之后的內容過濾符合標準.PHP實例
CHtmlPurifier組件可以作為一個widget或者filter來使用. 當作為一個widget來使用的時候,CHtmlPurifier可以對在視圖中顯示的內容進行平安過濾. 以下是代碼示例:PHP實例
<?php $this->beginWidget('CHtmlPurifier'); ?> //...這里顯示用戶輸入的內容... <?php $this->endWidget(); ?>
2. 跨站哀求偽造攻擊的防范PHP實例
跨站哀求偽造(簡稱CSRF)攻擊,即攻擊者在用戶瀏覽器在訪問惡意網站的時候,讓用戶的瀏覽器向一個受信任的網站發起攻擊者指定的哀求. 舉個例子,一個惡意網站有一個圖片,這個圖片的src地址指向一個銀行網站:http://bank.example/withdraw?transfer=10000&to=someone. 如果用戶在登陸銀行的網站之后訪問了這個惡意網頁,那么用戶的瀏覽器會向銀行網站發送一個指令,這個指令的內容可能是“向攻擊者的帳號轉賬10000元”. 跨站攻擊方式利用用戶信任的某個特定網站,而CSRF攻擊正相反,它利用用戶在某個網站中的特定用戶身份.PHP實例
要防范CSRF攻擊,必須謹記一條:GET哀求只允許檢索數據而不能修改服務器上的任何數據. 而POST哀求應當含有一些可以被服務器識別的隨機數值,用來保證表單數據的來源和運行結果發送的去向是相同的.PHP實例
Yii實現了一個CSRF防范機制,用來贊助防范基于POST的攻擊. 這個機制的核心就是在cookie中設定一個隨機數據,然后把它同表單提交的POST數據中的相應值進行比較.PHP實例
默認情況下,CSRF防范是禁用的.如果你要啟用它,可以編輯應用配置 中的組件中的CHttpRequest部分.PHP實例
代碼示例:PHP實例
return array( 'components'=>array( 'request'=>array( 'enableCsrfValidation'=>true, ), ), );
要顯示一個表單,請使用CHtml::form而不要自己寫HTML代碼.因為CHtml::form可以自動地在表單中嵌入一個暗藏項,這個暗藏項儲存著驗證所需的隨機數據,這些數據可在表單提交的時候發送到服務器進行驗證.PHP實例
3. Cookie攻擊的防范PHP實例
保護cookie免受攻擊是非常重要的.因為session ID通常存儲在Cookie中. 如果攻擊者竊取到了一個有效的session ID,他就可以使用這個session ID對應的session信息.PHP實例
這里有幾條防范對策:PHP實例
您可以使用SSL來產生一個平安通道,并且只通過HTTPS連接來傳送驗證cookie.這樣攻擊者是無法解密所傳送的cookie的.PHP實例
設置cookie的過期時間,對所有的cookie和seesion令牌也這樣做.這樣可以減少被攻擊的機會.PHP實例
防范跨站代碼攻擊,因為它可以在用戶的瀏覽器觸發任意代碼,這些代碼可能會泄露用戶的cookie.PHP實例
在cookie有變動的時候驗證cookie的內容.PHP實例
Yii實現了一個cookie驗證機制,可以防止cookie被修改.啟用之后可以對cookie的值進行HMAC檢查.PHP實例
Cookie驗證在默認情況下是禁用的.如果你要啟用它,可以編輯應用配置 中的組件中的CHttpRequest部分.PHP實例
代碼示例:PHP實例
return array( 'components'=>array( 'request'=>array( 'enableCookieValidation'=>true, ), ), );
一定要使用經過Yii驗證過的cookie數據.使用Yii內置的cookies組件來進行cookie操作,不要使用$_COOKIES.PHP實例
// 檢索一個名為$name的cookie值 $cookie=Yii::app()->request->cookies[$name]; $value=$cookie->value; ...... // 設置一個cookie $cookie=new CHttpCookie($name,$value); Yii::app()->request->cookies[$name]=$cookie;
更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》PHP實例
希望本文所述對大家基于Yii框架的PHP程序設計有所贊助.PHP實例
歡迎參與《PHP教程:YII Framework框架教程之安全方案詳解》討論,分享您的想法,維易PHP學院為您提供專業教程。