Yii框架資料傳輸的安全性問題(例如跨站指令碼攻擊)

Yii框架資料傳輸的安全性問題(例如跨站指令碼攻擊)

我們知道可以通過renderPartial將資料傳遞給前端進行顯示,但有時候難免傳遞的資料是獲取使用者的資料,要知道作為程式設計師是永遠都不要相信使用者輸入的。
比如下面的程式碼就會出現問題

public function actionSay(){
//第一步,建立一個陣列
$arr = array();
//第二步,將資料放入陣列中
$arr['text'] = "Hello world!<script>alert(3);</script>";
//第三步,傳遞資料
return $this->renderPartial('say',$arr);
}
<h1><?=$text?></h1>

訪問時會將其中的script程式碼執行
這裡寫圖片描述

對於這種問題,有兩種辦法解決

<?php
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
?>
<h1><?=HTML::encode($text)?></h1>
<h1><?=HtmlPurifier::process($text) ?></h1>

第一種就是使用HTML::encode進行編碼
第二種則是使用HtmlPurifier::process對程式碼進行過濾
兩種方法的區別也很明顯,如下如
這裡寫圖片描述