-
YII::$app的作用是:獲取得到E框架的應用主體,request請求組件查看全部
-
article下的post操作查看全部
-
url編碼查看全部
-
xss攻擊:跨站腳本攻擊(cross site scripting)查看全部
-
網站攻擊方式:xss攻擊、csrf攻擊、sql注入、文件上傳漏洞查看全部
-
xss攻擊:存儲型攻擊和反射性攻擊,lexer解析。 csrf攻擊:get型攻擊和post型攻擊。 sql注入攻擊:PDO占位符。 文件上傳漏洞:繞過類型檢測和不要輕易相信用戶提交文件。查看全部
-
emulatePrepare查看全部
-
emulate查看全部
-
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ /** * 通過PDO操作數據庫的方式來防止sql注入 * 如果在數據庫配置中'emulatePrepare'=>false,則占位符轉義是在數據庫端 * 運行下面代碼,sql語句會分成兩部分: * 向MySQL傳遞第一份數據:select * from users where name=? * 向MySQL傳遞第二份數據:zhangsan,會在MySQL進行轉義,就算傳過來的是中文和單引號,也會把單引號轉義之后再執行sql語句,就防止了sql注入 */ public function actionTest1(){ $user = (new \yii\db\Query()) ->select('*') ->from('users') ->where('name=:name',[':name'=>'zhangsan']) ->one(); print_r($user); } }查看全部
-
例子一: select * from users where name='zhangsan' and password='123456' name = zhansan' -- 那么查詢語句就變成 select * from users where name='zhangsan' --' and password='123456' 在數據庫中,--表示注釋,則后面的會被忽略,如果這是管理員用戶登錄時的驗證,則不需要密碼就可以正常的登錄到系統中 例子二: select * from users where name='zhangsan' and password='123456' name = '; drop table users; -- 那么查詢語句就變成 select * from users where name=' '; drop table users; --' and password='123456' 如果運行,會把users表刪除 例子三: 在一個論壇查找積分在60以下且關鍵字是youyiku的帖子,會運行以下sql語句 select * from articles where score<60 and title like '%youyiku%'; 如果查找關鍵字:' or 1=1 -- select * from articles where score<60 and title like '%' or 1=1 --%' 就突破了這個限制,會把所有帖子查找出來查看全部
-
防范csrf: 1,驗證碼:比較有效,降低用戶體驗; 2,referer頭,需要考慮正常訪問沒有referer頭的情況;值是這次請求的URL,是哪個頁面的請求 3,token, 響應請求時返回的防偽標志,服務器隨機生成的token,瀏覽器接收到token,在請求時帶上token,服務器對比,來檢測有沒有受到CSRF攻擊查看全部
-
偽造post請求 1、偽造form表單,要偽造相同表單控件,同樣提交到原來的后臺所處理頁面 2、用戶要先登錄到原來form表單所在的系統 3、誘導用戶來到我們的form表單,自動提交到目標服務器進行修改刪除操作查看全部
-
get型的CSRF攻擊: 1、該用戶登錄了某銀行網站 2、構造了某銀行轉賬URL:http://www.xxxbank.com/index.php?from=zhangsan&to=lisi&money=400 3、用戶點擊了這個鏈接,就會執行轉賬過程,完成一次CSRF攻擊查看全部
-
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ public function actionTest1(){ \YII::$app->response->headers->add('X-XSS-Protection','0');//作用:告訴瀏覽器,如果待會傳遞過來的是一段js代碼,瀏覽器不用進行一些過濾等的操作,這樣瀏覽器就不會干擾代碼的運行,js代碼能夠順利執行,在實際工作中是不能添加的 $script = \YII::$app->request->get('script'); // echo $script; echo \yii\helpers\Html::encode($script);//把傳過來的參數進行HTML實體編碼 } public function actionTest2(){ \YII::$app->response->headers->add('X-XSS-Protection','0'); $script = \YII::$app->request->get('script'); echo \yii\helpers\HtmlPurifier::process($script);//這個函數使用了lexer技術,可以識別HTML里的JS、HTML、CSS三種代碼,并把js過濾掉 } }查看全部
-
YII框架第一種防范xss(轉碼):Html::encode($str);內部其實調用了PHP的htmlspecialchars函數,把預定義的字符串轉換成HTML實體查看全部
舉報
0/150
提交
取消