日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Microsoft SharePoint Foundation 中主要有兩種類型的頁面,分別是應(yīng)用程序頁(Application Page) 和網(wǎng)站頁(Site Page)。

?? 應(yīng)用程序頁(Application Page) 和網(wǎng)站頁(Site Page)都從同一母版頁繼承其布局。

?? 應(yīng)用程序頁(Application Page)與傳統(tǒng)的 Microsoft ASP.NET 3.5 網(wǎng)頁最為相似。但是,應(yīng)用程序頁面并非直接派生自System.Web.UI.Page,而是派生自 LayoutsPageBase 或 UnsecuredLayoutsPageBase。應(yīng)用程序頁面不在安全模式下運(yùn)行,并且可能包含內(nèi)嵌代碼。只有場(chǎng)管理員可以安裝應(yīng)用程序頁面。

?? 網(wǎng)站頁(Site Page)是由最終用戶創(chuàng)建、編輯和自定義的頁面,是可以由用戶個(gè)性化定制與修改的頁面。網(wǎng)站頁是通過存儲(chǔ)在前端 Web 服務(wù)器(Front-End Web Server)的文件系統(tǒng)上的模板頁面設(shè)置的。在設(shè)置網(wǎng)站時(shí),SharePoint Foundation 會(huì)創(chuàng)建指向文件系統(tǒng)上的頁面模板實(shí)例的指針,這個(gè)指針存放在使用了此網(wǎng)站頁的Website的Content Database中。這樣,SharePoint Foundation 就可以避免重復(fù)創(chuàng)建每次創(chuàng)建網(wǎng)站時(shí)都要設(shè)置的頁面的副本。

?????? ?????????????????????網(wǎng)站頁(Site Page)具有兩種類型 - 標(biāo)準(zhǔn)頁(Standard Page)和 Web 部件頁(Web Part Page)。

? ?? 標(biāo)準(zhǔn)頁(Standard Page)包含文本、圖像、Web 部件及其他元素。這些頁面是啟用 wiki 的頁面,可以包含 Web 控件和內(nèi)嵌 Web 部件。標(biāo)準(zhǔn)頁(Standard Page)派生自 WikiEditPage 類,而不直接派生自 System.Web.UI.Page。

???? Web 部件頁(Web Part Page) :顧名思義,它們是包含 Web 部件區(qū)域(Web Part Zone)的 Web 部件(Web Part)頁。Web 部件頁(Web Part Page)派生自 WebPartPage,而不直接派生自 System.Web.UI.Page。

???? Sharepoint2010中加入了第三種網(wǎng)站頁(Site Page):PublishingPage,這種頁面只使用在發(fā)布網(wǎng)站(Publishing Sites)中。在發(fā)布網(wǎng)站中,作者和批準(zhǔn)者(Author and Approvers)使用發(fā)布功能(Publishing Feature)來創(chuàng)建內(nèi)容以提供給網(wǎng)站用戶訪問。通常來說,一個(gè)發(fā)布網(wǎng)站都會(huì)綁定有Approval工作流,這樣待發(fā)布的內(nèi)容才能在正式發(fā)布前把握質(zhì)量。Publishing Pages通常基于Page layouts這樣的頁面模板創(chuàng)建,Page Layouts提供了一致性的結(jié)構(gòu)給Publishing Pages,并且它是可以被客戶化定制的。

???? Sharepoint還包括一套內(nèi)建的用于移動(dòng)設(shè)備的網(wǎng)頁。SharePoint Foundation 移動(dòng)網(wǎng)頁比非移動(dòng)網(wǎng)頁簡單得多。移動(dòng)網(wǎng)頁不使用 ASP.NET 母版頁/內(nèi)容頁技術(shù),也不劃分為應(yīng)用程序頁面和網(wǎng)站頁面。SharePoint Foundation 移動(dòng)網(wǎng)頁都是應(yīng)用程序頁面,且位于 \_layouts\Mobile 文件夾中。SharePoint Foundation 移動(dòng)網(wǎng)頁在某個(gè)方面特別類似網(wǎng)站頁面:如果頁面包含移動(dòng)的 Web 部件適配器,則必須將該適配器注冊(cè)為安全控件,否則將不呈現(xiàn)該適配器

上面對(duì)Sharepoint的網(wǎng)頁情況作了大致說明

下面讓我們來重點(diǎn)比較一下應(yīng)用程序頁(Application Page)與網(wǎng)站頁(Site Page),看看它們具體的區(qū)別:

1、應(yīng)用目的(Typical purpose):

??? 應(yīng)用程序頁( Application pages)側(cè)重于"功能"實(shí)現(xiàn)(function-oriented),比如象提供給用戶的用于創(chuàng)建一個(gè)新的Web Application的頁面那就是應(yīng)用程序頁,你在那個(gè)創(chuàng)建頁面上輸入所需的參數(shù),然后再點(diǎn)確定,從而創(chuàng)建一個(gè)新的Web Application。

??? 而網(wǎng)站頁(Site Pages)則側(cè)重于"內(nèi)容"實(shí)現(xiàn)(Content-oriented),比如像在標(biāo)準(zhǔn)的Team Site中給用戶展示當(dāng)前網(wǎng)站都有哪些list的頁面就是網(wǎng)站頁。

??? 當(dāng)然,這種區(qū)分并不是強(qiáng)制性的,有時(shí)也有混用的情況,第三方可以開發(fā)一個(gè)用戶定義的Web Part,在這個(gè)Web Part上實(shí)現(xiàn)一些特定的用戶操作功能(eg:List管理功能,信息處理功能…,就像你一般的應(yīng)用程序處理界面上的那些功能一樣),然后再把這個(gè)Web Part加載到網(wǎng)站頁,從而讓網(wǎng)站頁也具有了"功能"操作性。有時(shí)這種方式比開發(fā)一個(gè)應(yīng)用程序頁更靈活,也更便捷。

2、用戶定制能力(Customizability):

???? 網(wǎng)站的所有者(owner)以及擁有相應(yīng)權(quán)限的用戶可以對(duì)網(wǎng)站頁(Site Page)進(jìn)行用戶定制修改,用戶還可以添加一個(gè)新的ASCX頁面到網(wǎng)站頁陳列區(qū)(Site Pages Gallery)。

???? 但用戶卻無權(quán)對(duì)應(yīng)用程序頁(Application Page)進(jìn)行定制與修改,只有管理員才有權(quán)限安裝一個(gè)新的應(yīng)用程序頁到網(wǎng)站上來。

3、繼承基類(Class inheritance):

??? 應(yīng)用程序頁( Application pages)繼承自?LayoutsPageBase?類 或者UnsecuredLayoutsPageBase?類。

??? 網(wǎng)站頁(site pages)繼承自?WikiEditPage?類或?WebPartPage?類.

??? 而所有上面提到的基類又都繼承自ASP.NET的?Page?類.

4、Web 部件支持(Web Part support):

??? 應(yīng)用程序頁( Application pages)沒有Web Part Zone或者動(dòng)態(tài)的Web Parts,但它可包含靜態(tài)的Web Parts,可這種靜態(tài)的Web Parts沒多少實(shí)用價(jià)值,因?yàn)殚_發(fā)者完全可以采用傳統(tǒng)控件來實(shí)現(xiàn)要在此頁面上完成的功能。

??? 網(wǎng)站頁(Site pages)既可以包含靜態(tài)Web Parts也可以包含動(dòng)態(tài)Web Parts和Web Part Zone。

5、存儲(chǔ)位置(Storage location):

????應(yīng)用程序頁( Application pages)存儲(chǔ)在前端Web服務(wù)器(Front-End Web Server)的文件系統(tǒng)上,其位置是在對(duì)應(yīng)的Web Application的_Layouts虛擬目錄(Virtual Directory)下,此虛擬目錄會(huì)映射到(Map to)服務(wù)器文件系統(tǒng)的實(shí)際磁盤目錄上,此目錄是 :%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS 目錄或其子目錄。

?????網(wǎng)站頁(Site Page)通常根據(jù)它們是否已經(jīng)被進(jìn)行了定制來分為Uncustomized Page和Customized Page兩種(在SPS2003中,使用的是Ghosted PageUnghosted Page這兩個(gè)術(shù)語),具體說明如下

???????????I、網(wǎng)站頁沒有被客戶個(gè)性化定制修改:當(dāng)我們新建一個(gè)站點(diǎn)的時(shí)候,所有的頁面都是Uncustomized Page,這些頁面都是直接使用了存放在前端 Web 服務(wù)器(Front-End Web Server)磁盤上的頁面模板(位于%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE目錄及其子目錄(eg: SiteTemplates與Features子目錄就是常用的子目錄),換言之,這個(gè)新站點(diǎn)的頁面其實(shí)是"不存在的",它們只是一個(gè)"標(biāo)記"(這也就是在SPS2003中,它們被稱為Ghosted Page的原因),如果用戶訪問一個(gè)頁面,SharePoint會(huì)自動(dòng)從磁盤上找到那個(gè)真正的頁面模板文件,然后將其載入到內(nèi)存中,解析它,并將其編譯成一個(gè)獨(dú)立的DLL文件(為了性能,這個(gè)DLL會(huì)緩存在磁盤上以避免下次重復(fù)編譯),然后載入這個(gè)DLL并運(yùn)行和輸出.

??????????II、網(wǎng)站頁被個(gè)性化定制或修改:一旦網(wǎng)站頁被Microsoft SharePoint Designer這樣的工具修改,那么SharePoint會(huì)自動(dòng)將修改后的文件內(nèi)容保存到站點(diǎn)所用的內(nèi)容數(shù)據(jù)庫(Content Database)中,它就成了一個(gè)Customized Page。當(dāng)用戶訪問這個(gè)頁面時(shí),SharePoint會(huì)自動(dòng)從內(nèi)容數(shù)據(jù)庫中讀出這個(gè)文件的內(nèi)容,然后對(duì)其進(jìn)行解析,運(yùn)行。這種情況下,SharePoint不會(huì)再將其編譯成一個(gè)獨(dú)立的DLL文件,實(shí)際上,SharePoint會(huì)在內(nèi)存中載入這個(gè)頁面的結(jié)構(gòu),運(yùn)行,然后輸出,然后將它從內(nèi)存中卸載以節(jié)省內(nèi)存。

???????? 注:Uncustomized Site Page雖然存放在文件系統(tǒng)中,但實(shí)際上它在Content Database中也會(huì)有記錄,這個(gè)記錄主要用于保存.aspx頁面文件的存放路徑,這就是指向文件系統(tǒng)上的頁面模板實(shí)例的指針。為什么會(huì)這么做呢,那是因?yàn)閁ncustomized Site Page通常會(huì)被若干個(gè)Website共享,所以,凡是調(diào)用到此Uncustomized Site Page的Website就會(huì)在它們的Content Database中存放此Page的路徑。例如:每一個(gè)Team Site的Content Database都會(huì)有記錄指向Team Site的Home Page,這個(gè)HomePage就是Uncustomized Site Page,當(dāng)打開TeamSite的相關(guān)網(wǎng)頁時(shí),系統(tǒng)就會(huì)根據(jù)此處存放的HomePage的路徑把HomePage調(diào)取并顯示出來。當(dāng)然,如果有網(wǎng)站對(duì)此HomePage進(jìn)行了個(gè)性化的修改,那么它會(huì)變成了Customized Page,于是相關(guān)修改內(nèi)容就會(huì)保存進(jìn)Content Database,而原先Content Database中保存的路徑記錄就會(huì)被移除。不過,可以通過 Web 瀏覽器或 SharePoint Designer 之類的工具將自定義頁面重置為原始模板頁面,即放棄用戶的個(gè)性化定制,重新使用以前的頁面模板,這樣一來,在Content Database中又會(huì)重新存放指向文件系統(tǒng)上的頁面模板實(shí)例的指針記錄。 有的時(shí)候,Uncustomized Site Page會(huì)被做為模板(Page Template)被存放在Content Database中的頁面實(shí)例所引用。總之記住:只要網(wǎng)站上的頁面沒有被個(gè)性化定制或修改,那么放在Content Database中的記錄就只是一個(gè)路徑指針用于指向這個(gè)頁面在文件系統(tǒng)中的存放路徑的。

6、可訪問性(Availability):

??? 一個(gè)應(yīng)用程序頁(Application Page)可以被其所在的WebApplication中的任何Website訪問到。

??? 而一個(gè)網(wǎng)站頁(Site Page)通常卻只能被它所部署的網(wǎng)站中的用戶訪問到,雖然我們前面提到Uncustomized site pages也可以被多個(gè)Website訪問到,但這需要特定的手段才能做到(那些網(wǎng)站需要被做為Feature的一部分或Site Definition的一部分提供出來)。

7、解析模式(Parsing mode):

??? 應(yīng)用程序頁(Application Page)通過"直接(Direct)"方式進(jìn)行解析。所謂直接方式就是指通過標(biāo)準(zhǔn)的ASP.NET頁面解析器進(jìn)行解析,當(dāng)這個(gè)網(wǎng)頁首次被訪問時(shí),它就會(huì)被解析器解析(Parsed)、編譯(Compiled),并緩存在前端 Web 服務(wù)器(Front-End Web Server)的內(nèi)存中,直到此請(qǐng)求所關(guān)聯(lián)的application domain或IIS被回收清空(recycled)。如果在回收前有其它訪問請(qǐng)求,那么它就會(huì)直接從緩存中提供給請(qǐng)求者而無需重新進(jìn)行解析、編譯的過程。

??? 網(wǎng)站頁(Site Page)分兩種情況 :

??????? I、Uncustomized site pages也是通過"直接(Direct)"方式進(jìn)行解析。

??????? II、而customized site pages與添加到陳列區(qū)(Site Page Gallery)的新建網(wǎng)頁則是通過"安全模式(Safe Mode)"進(jìn)行解析的。

??????? 安全模式(Safe Mode)解析特點(diǎn)如下:

???????? (i)、只有在Web Application的Web.config文件中注冊(cè)為"安全(Safe)"的控件(包括Web Parts)才能被解析和呈現(xiàn)。

???????? (ii)、內(nèi)聯(lián)服務(wù)器端代碼(Inline server-side code)在安全模式下是不允許的,如果你在網(wǎng)頁中嵌入了內(nèi)聯(lián)服務(wù)器端代碼,那么系統(tǒng)會(huì)返回給你一個(gè)報(bào)錯(cuò)頁面。 所謂內(nèi)聯(lián)服務(wù)器端代碼如下:?

<script?runat="server">?
[code?is?here]?
</script>?
或?
<asp:button?OnClick="MyButtonHandler()"?/>?

????????????? 對(duì)于后臺(tái)代碼(Code behind)和內(nèi)嵌的JavaScript(embedded Javascript)是被允許的,因?yàn)樗鼤?huì)被編譯成單獨(dú)的程序集并部署。

????????(iii)、這種Customized Site Page網(wǎng)頁與直接模式處理的應(yīng)用程序頁是不同的,因?yàn)樗幌駪?yīng)用程序頁一樣需要被系統(tǒng)編譯,因此,如果在此類網(wǎng)頁中加入諸如編譯指令之類的東西都是不起作用的。

???? 需要注明的是,這里的安全模式解析(safe mode parsing)與Sharepoint其它文檔提到的安全模式處理(safe mode processing)和安全模式呈現(xiàn)(safe mode rendering)其實(shí)指的都是同一件事。

?????Sharepoint為什么會(huì)引入這種安全模式呢?

???? 你可以想想,既然允許用戶個(gè)性化定制,那么就必須涉及到網(wǎng)頁行為的定制,由此產(chǎn)生的問題就是:用戶可能在個(gè)性化過程中加入執(zhí)行代碼,如果這些代碼既安全又高效那也沒什么,但誰又能保證所有用戶都做到這點(diǎn)呢。還有就是這種網(wǎng)頁不能被編譯,這也不難理解,試想如果有成百上千個(gè)用戶都做了個(gè)性化定制,而這種個(gè)性化定制的網(wǎng)頁都必須要通過重新編譯才能呈現(xiàn),那么我們的服務(wù)器將承受多大的壓力,并且這些被編譯的結(jié)果要放到服務(wù)器內(nèi)存中緩存,這個(gè)緩存的內(nèi)容只能通過回收application domain來清除,但問題是回收application domain就會(huì)清空程序集,程序集中還包括了其它網(wǎng)頁內(nèi)容,你做不到僅僅清空你想要移除的那個(gè)特定用戶定制的網(wǎng)頁,要么都清空,要么都保留,這顯然是不合理的。此外在一個(gè)application domain中可以加載多少個(gè)程序集,在系統(tǒng)中也是有限制的。所以,所有這些因素都決定了為什么Sharepoint會(huì)引入安全模式解析,并且此解析方式為什么要按如此的規(guī)則開展工作。

???? 我們?cè)谇懊嫣岬?#xff1a;內(nèi)聯(lián)服務(wù)器端代碼(Inline server-side code)在安全模式(Safe Mode)解析下是不允許的,其實(shí)準(zhǔn)確的說應(yīng)該是在"通常情況"下是不允許的。其實(shí)Sharepoint也不是那么絕情,它也留得有退路,它允許你通過修改Web Application的Web.config來實(shí)現(xiàn)允許內(nèi)聯(lián)服務(wù)器端代碼或不安全控件,也即:向Web.config中的<Sharepoint>節(jié)點(diǎn)下的<SafeMode>元素中添加<PageParserPath>子元素,通過設(shè)置此元素的相關(guān)屬性來指明要向哪個(gè)網(wǎng)頁中添加內(nèi)聯(lián)服務(wù)器端代碼或非安全控件(unsafe contrl)。顯然這樣作是比較危險(xiǎn)的,所以你必須要非常小心,因?yàn)檫@種解禁可以是單個(gè)特定頁面,也可以是整個(gè)目錄的頁面。添加 PageParserPath 設(shè)置將使可將頁面上載到指定文件夾的任何人都能將任意的完全信任代碼寫入服務(wù)器。所以管理員在提供這些設(shè)置時(shí)應(yīng)格外小心,要提前了解此操作存在的安全隱患,盡量保證系統(tǒng)的安全與性能。

???? 一種威脅的例子:

???? 如果你允許所有以 GetInfo*.aspx模式命名的網(wǎng)頁添加內(nèi)聯(lián)服務(wù)器端代碼,那么別有用心者就會(huì)個(gè)性化一個(gè)攻擊性網(wǎng)頁并以GetInfoAsMyMind.aspx來命名,此命名當(dāng)然能通過Sharepoint的查檢規(guī)則并獲得運(yùn)行相關(guān)代碼的權(quán)力,結(jié)果就是對(duì)你的系統(tǒng)進(jìn)行攻擊與傷害。

???? 下面的示例演示使用通配符的 PageParserPath 設(shè)置。

????? 添加此 PageParserPath 將允許對(duì)母版頁樣式庫具有權(quán)限的任何人上載服務(wù)器端代碼。在添加此類型的 PageParserPath 設(shè)置時(shí)要格外小心。

<SharePoint>?
<SafeMode?...>?
<PageParserPaths>?
<PageParserPath?VirtualPath="/_mpg/*"?CompilationMode="Always"?AllowServerSideScript="true"?IncludeSubFolders="true"/>?
</PageParserPaths>?

?????至于非安全控件(Unsafe control)是指通過編輯工具(Editing Tool)添加的控件(如:通過Sharepoint Designer添加的控件)。而至于WebPart則不管使沒使用<PageParserPath>元素來開啟(enable)非安全控件(Unsafe Control),都必須要注冊(cè)為安全才能被允許。

????你還可以通過使用<PageParserPath>元素來開啟允許用戶定制網(wǎng)站頁(Customized Site Page)的可編譯功能。這樣這個(gè)網(wǎng)頁就會(huì)被編譯成DLL并存放到緩存中,顯然這種做法就類似于應(yīng)用程序頁(Application Page)的編譯方式了,這樣做的好處就是加快此網(wǎng)頁的訪問響應(yīng)速度。所以,它只針對(duì)那些經(jīng)常會(huì)被訪問到的網(wǎng)頁有效。????

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。