1. 程式人生 > >探索ASP.NET MVC5系列之~~~2.檢視篇(上)---包含XSS防禦和非同步分部檢視的處理

探索ASP.NET MVC5系列之~~~2.檢視篇(上)---包含XSS防禦和非同步分部檢視的處理

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程不妥之處歡迎指正

4.共用其他檢視

不同控制器渲染同一個檢視檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章列表,一個是顯示文章列表,一個是顯示編輯推薦文章列表,基本上都是<ul><li></li></ul>這種結構,那麼是不是可以把這種的View弄一個共用檢視出來呢?

案例:

技能點講解:先看效果:

同一個檢視

 return View("~/Views/Index/Index.cshtml");

5.強型別檢視(常用名稱空間可以定義在Views下的Web.Config

通過ViewBag傳遞少量資料的確用的爽,我也挺喜歡這樣的。但是處理資料的時候就特別麻煩了(ViewBag是弱型別的,不能點出我們需要的屬性),這時候強型別就油然而生了~~~

擴充套件:動態值不能作為引數傳遞給擴充套件方法(C#編譯器在編譯的時候為了選擇正確的擴充套件方法肯定是需要其真正型別的)【你傳引數用var型別的傳著試試~~】

效果:

程式碼部分:

Model:

控制器:

檢視:

常用名稱空間可以設定在Views的web.config中,eg:

 6.Razor的簡單接觸(內含XSS防禦)

說下Html和Javascript的Xss防禦

Razor表示式是用HTML自動編碼的,我們來看這個例子:

是不是突然感覺到微軟其實為我們做了很多準備,操了很多心?有木有,這些安全意識很多人都是沒有的

如果你把使用者的輸入用Html.Raw的方式顯示,那就坑爹了(儘量避免這種方式,至少使用者輸入的不能用這種)

--------------------------------------------------------------------------------------------------

下面演示一下專案中Ajax的方式

使用者輸入變個方式不就繞過驗證了嗎

解決方法:@Ajax.JavaScriptStringEncode(ViewBag.Test2)

應用建議:Html.Encode(),@Ajax.JavaScriptStringEncode()

--------------------------------------------------------------------------------------------------------

如果你覺得萬事大捷,呃。。。。

下面說下URL的XSS防禦:(這個主要是一些自定義的模板引擎或者靜態頁面或者Aspx頁面需要當心)

原理說一下:比如你是一個接受使用者的超連結:<a href="http://www.dkill.net?mmd=ddf">什麼鬼?</a>

如果使用者mmd輸入的是這個構造呢?===> "></a><script src="//cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><a>

想一想,為什麼這樣構造?==》這樣構造不影響他正常使用,那發現的機率就小了

解決方法:Url.Encode

諸如這種的寫法以後就不要出現了,如果是因為帶了特殊符號而傳不過來可以編碼後再傳

如果你的檢視是aspx的記得過濾HTMLJSURL~基本上問題都出在這

推薦使用:AntiXSS

7.佈局系列

 1._ViewStart

MVC5以前都是要手動引用母版頁

自從MVC5有了_ViewStart.cshtml,感覺整個春天都來了

檢視都不需要引用”母版頁“了(預設就全部引用了_Layout)

 

2.RenderSection~~呈現特別的節部分

一般不推薦這麼寫:

 

如果子頁面沒有定義Footer的節,那麼就報錯了

其他兩種寫法:子頁中定義了Footer就顯示子頁的,沒有定義就顯示預設

另一種方式(逆天用的比較多):@RenderSection("Footer", false)

[email protected]() 呈現子頁的主體內容

--------------------------------------------------------------------

4.部分檢視(主要就是Html.Partial、 Html.RenderPartial、Html.RenderAction

先說下這兩個的區別:Html.Partial 和 Html.RenderPartial

效果:(Html.Partial直接顯示檢視部分,不經過控制器

再說下Html.RenderPartial 和 Html.RenderAction

RenderPartia l咋一看和 RenderAction 差不多,但===》(RenderPartia 我不怎麼用,感謝2樓朋友指正錯誤

來看例子:

 而RenderAction卻可以顯示:

-------------------------------------

可能有些人還不知道“非同步是什麼鬼”,呃呃。。。

好吧,舉個例子,具體的不在本文研究之中,可以自信搜尋或者關注後續的文章

步入正軌,繼續我們的分部檢視講解:

控制器部分:

檢視:

呼叫:

有時候你這樣寫也不會報錯,那是因為你沒有的非同步等待沒有被阻止,或者你版本比較高

 分部檢視推薦寫法:

@{Html.RenderAction("xx", "xxx");}

Html.Partial 推薦應用場景:Seo,CSS,Script

相關推薦

探索ASP.NET MVC5系列~~~2.檢視---包含XSS防禦非同步分部檢視處理

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 4.共用其他檢視 不同控制器渲染同一個檢視檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章列表,一個是顯示文章列表,一個是顯示編輯推薦文章列表,基

探索ASP.NET MVC5系列~~~5.快取頁面快取+二級快取

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 這次來篇放鬆的,咱們不要老是說安全相關的東西。快取這東西並不是MVC獨有的,N年前就有了,簡單介紹一下平時專案裡面使用的(Redis,Memcache等下次說)  1.頁面快取:

探索ASP.NET MVC5系列~~~4.模型---包含模型常用特性過度提交防禦

@model Register @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Register

探索ASP.NET MVC5系列~~~1.基礎---必須知道的小技能

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程 MVC==>Model View Controller  Model ====>模型就是要去顯示,儲存,建立,更新和刪除的物件(實體) View =====>檢視是使用者看到並與之互動的介

探索ASP.NET MVC5系列~~~3.檢視---包含常用表單暴力解猜防禦

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 這幾天忙著幫別人普及安全,今天就把這篇文章結束掉,明天講下 “過度提交” 的防禦。這次開篇就激烈點==》爆破演示: 開啟Burp   設定監聽埠==》8080 設定一下代理:

ASP.NET MVC5+EF6+EasyUI 後臺管理系統1-前言與目錄持續更新中...

編碼規範 圖標 pri log 任務 ros 部署 基本 form 開發工具:VS2015(2012以上)+SQL2008R2以上數據庫    您可以有償獲取一份最新源碼聯系QQ:729994997 價格 666RMB 升級後界面效果如下: 日程管理 http://

ASP.NET MVC5+EF6+EasyUI 後臺管理系統65-MVC WebApi 用戶驗證 (1)

screen 屬性 access override jquery true mod 解析 action 系列目錄 前言: WebAPI主要開放數據給手機APP,其他需要得知數據的系統,或者軟件應用,所以移動端與系統的數據源往往是相通的。 Web 用戶的身份驗證,及

ASP.NET MVC5+EF6+EasyUI 後臺管理系統4-創建項目解決方案

構建 文章 數據庫 操作 webapi http 業務 pps 技術分享 系列目錄 前言 為了符合後面更新後的重構系統,文章於2016-11-1日重寫 設計中術語,概念這種東西過於模糊,我們必須學習累積才能認識這些概念模型。 我無法用文章來下詳細解析此系統的深層概念,需要

ASP.NET MVC5+EF6+EasyUI 後臺管理系統87-MVC Excel導入導出

.net本文示例代碼下載: 鏈接:http://pan.baidu.com/s/1jHBdgCA 密碼:hzh7ps:Vs數據庫腳本在解壓目錄下,修改web.config數據庫鏈接,示例代碼包含:導入,導出,上傳前言:導入導出實在多例子,很多成熟的組建都分裝了導入和導出,這一節演示利用LinqToExcel組

ASP.NET MVC5+EF6+EasyUI 後臺管理系統62-EF鏈接串加密

image title orm mst .... 比較 string類 sin isn 前言:   這一節提供一個簡單的功能,這個功能看似簡單,找了一下沒找到EF鏈接數據庫串的加密幫助文檔,只能自己寫了,這樣也更加符合自己的加密要求 有時候我們發布程序為了避免程序外的

ASP.NET MVC5+EF6+EasyUI 後臺管理系統88-Excel匯入匯出-主從表結構匯出

前言 前面一篇詳細講解了匯入匯出,本節演示混合結構的匯出功能!同時提供程式碼下載.. 先看效果圖:這個一個混合的Excel,列表與自定義資訊的混合!   我們的步驟大概分為以下幾步 1.模擬資料庫資料 2.建立工作簿 3.填充固定資料 4.合併單元格 5.處理動態資料  

ASP.NET MVC5+EF6+EasyUI 後臺管理系統17-LinQ動態排序

系列目錄 首先修復程式中的一個BUG這個BUG在GridPager類中,把sord修改為sort這個名稱填寫錯誤,會導致後臺一直無法獲取datagrid的排序欄位 本來是沒有這一講的,為了使20行的程式碼精簡成2行,我查閱了一些資料,借鑑了一些大神的建議,首先感謝第八講中,1

ASP.NET MVC5+EF6+EasyUI 後臺管理系統20-許可權管理系統-根據許可權獲取選單

系列目錄 不知不覺到20講,真是漫長的日子,可惜最近工作挺忙,要不可以有更多的時間來更新,多謝大家的一路支援.如果你覺得好,記得幫我點選推薦^-^ 我們在之前已經插入一些真實資料,其中包含了一個使用者和樣例程式SysSample的許可權,並實現了使用者的登入。 但有的朋友對錶

ASP.NET MVC5+EF6+EasyUI 後臺管理系統90-EF 批量操作

這次我們來看 EntityFramework-Plus(免費開源) 庫的用法相比其他擴充套件庫,這個更加新並且用法更加簡單這是一個對Entity Framework進行擴充套件的類庫.支援EF EF5, EF6, EF Core,來彌補EF目前的短板GitHub地址 http

ASP.NET MVC5+EF6+EasyUI 後臺管理系統5-EF增刪改查

using System; using System.Collections.Generic; using System.Linq; using Apps.Models; using Apps.Common; using Apps.IBLL; using Apps.IDAL; using Apps.DAL;

ASP.NET MVC5+EF6+EasyUI 後臺管理系統33-MVC 表單驗證

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; u

ASP.NET MVC5+EF6+EasyUI 後臺管理系統89-國際化,本地化,多語言應用

開篇 早年寫過一篇多語言的應用 :   本地化(多語言)   講述瞭如何建立多語言的資原始檔,並利用資原始檔來獲得頁面和請求的語言屬性 本次補充這篇文章,的原因是在實際專案中,有多種需要多語言的情況 比如:日誌要根據當前語言顯示 而有些情景比較複雜,我們可能的key是

死磕 java同步系列AQS終面試

問題 (1)AQS的定位? (2)AQS的重要組成部分? (3)AQS運用的設計模式? (4)AQS的總體流程? 簡介 AQS的全稱是AbstractQueuedSynchronizer,它的定位是為Java中幾乎所有的鎖和同步器提供一個基礎框架。 在之前的章節中,我們一起學習了ReentrantLock、R

資料結構與演算法連結串列

連結串列作為一種基礎的資料結構之一,我們會常常使用到它,接下來就讓我們一起學習吧。 1、連結串列的經典應用場景: LRU快取淘汰演算法。 2、快取是一種提高資料讀取效能的技術,在硬體設計、軟體開發中都有著非常廣泛的應用,比如常見的CPU快取、資料庫快取、瀏覽器快取等等。

(視訊)asp.net core系列k8s叢集部署視訊

0、前言 應許多網友的要求,特此錄製一下k8s叢集部署的視訊。在錄製完成後發現視訊的聲音存在一點瑕疵,不過不影響大家的觀感。 由於B站的賬號等級不夠無法上傳視訊因此先放在youku上(存在廣告),請大家多多包涵。 一、視訊說明 1、視訊地址: 如果有不懂,或者有疑問的歡迎留言。視訊分為兩段。 第一