亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ASP.NET的Web網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)的安全策略實(shí)踐

        2006-11-27 07:39:32楊曉明雷光輝何青建
        計(jì)算機(jī)教育 2006年11期
        關(guān)鍵詞:視圖

        楊曉明 雷光輝 何青建

        摘要:Web網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)中,安全性是要考慮的關(guān)鍵問(wèn)題,本文通過(guò)開(kāi)發(fā)系統(tǒng)實(shí)踐,從系統(tǒng)規(guī)劃階段、設(shè)計(jì)開(kāi)發(fā)階段、發(fā)布運(yùn)行階段三個(gè)方面詳細(xì)闡述安全策略的實(shí)現(xiàn),總結(jié)出如何充分利用ASP.NET的安全機(jī)制、數(shù)據(jù)庫(kù)安全控制、增強(qiáng)管理員網(wǎng)絡(luò)安全防范意識(shí),構(gòu)建一個(gè)性能安全的Web應(yīng)用程序。

        關(guān)鍵詞:Web應(yīng)用程序;web.config;認(rèn)證和授權(quán);視圖;存儲(chǔ)過(guò)程

        1 前言

        微軟公司推出的ASP.NET,可以非常方便和高效地規(guī)劃、設(shè)計(jì)、開(kāi)發(fā)和發(fā)布Web網(wǎng)絡(luò)應(yīng)用程序。筆者利用ASP.NET為新疆職工培訓(xùn)中心開(kāi)發(fā)了運(yùn)行在校園網(wǎng)上的網(wǎng)絡(luò)辦公管理系統(tǒng)。該系統(tǒng)分為管理部門(mén)和教學(xué)部門(mén)兩個(gè)角色,實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)、瀏覽查詢和教學(xué)分析統(tǒng)計(jì)功能,提高了培訓(xùn)中心的信息化管理和校園網(wǎng)的利用價(jià)值。在整個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程中,考慮最多的就是安全問(wèn)題,相信這也是所有開(kāi)發(fā)人員開(kāi)發(fā)Web網(wǎng)絡(luò)應(yīng)用程序所必須面對(duì)的問(wèn)題。因此本文針對(duì)基于ASP.NET的Web網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)的安全問(wèn)題,以我們開(kāi)發(fā)的系統(tǒng)為例,從3個(gè)方面來(lái)闡述實(shí)際解決策略:

        (1)系統(tǒng)規(guī)劃階段的安全策略;

        (2)設(shè)計(jì)開(kāi)發(fā)階段的安全策略;

        (3)發(fā)布運(yùn)行階段的安全策略。

        希望我們的實(shí)踐能對(duì)利用ASP.NET開(kāi)發(fā)Web網(wǎng)絡(luò)應(yīng)用程序的相關(guān)技術(shù)人員提供參考和借鑒。

        2 安全策略實(shí)踐

        2.1系統(tǒng)規(guī)劃階段

        Web網(wǎng)絡(luò)應(yīng)用程序,就是運(yùn)行在Web應(yīng)用服務(wù)器上的一個(gè)虛擬目錄及其子目錄下的所有文件、網(wǎng)頁(yè)、模塊以及可執(zhí)行代碼的總和。根據(jù)系統(tǒng)需求分析,用戶分為管理部和教學(xué)部(對(duì)數(shù)據(jù)的操作權(quán)限有區(qū)分),因此建立兩個(gè)目錄分別存放相應(yīng)的網(wǎng)頁(yè)文件。另外,還有數(shù)據(jù)庫(kù)文件夾、樣式文件夾、網(wǎng)頁(yè)模版文件夾等。而對(duì)數(shù)據(jù)庫(kù)表的操作文件放在特殊的文件夾bin下,因?yàn)樵撃夸浭墙谷魏螢g覽器訪問(wèn)的,從而避免了遠(yuǎn)程客戶下載代碼的可能性。應(yīng)用程序根目錄下除了上述目錄外,還有兩個(gè)重要的應(yīng)用程序級(jí)文件:global.asax 和web.config(下文詳細(xì)分析)??傊募夸浀囊?guī)劃是按類(lèi)別存放文件,重要文件存在bin目錄下。

        2.2設(shè)計(jì)開(kāi)發(fā)階段

        主要從后臺(tái)的數(shù)據(jù)庫(kù)設(shè)計(jì)、配置文件web.config及前臺(tái)界面設(shè)計(jì)三個(gè)內(nèi)容,著重闡述對(duì)安全問(wèn)題的解決策略。

        2.2.1數(shù)據(jù)庫(kù)設(shè)計(jì)

        為了提高訪問(wèn)數(shù)據(jù)的效率和安全性,能在后臺(tái)做的事情,就在后臺(tái)完成,能分開(kāi)獨(dú)立做的事情,就分開(kāi)獨(dú)立實(shí)現(xiàn)。

        (1)充分利用后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)的視圖和存儲(chǔ)過(guò)程,如:創(chuàng)建帶參數(shù)的視圖,實(shí)現(xiàn)不同角色身份的用戶對(duì)各自權(quán)限范圍內(nèi)的數(shù)據(jù)訪問(wèn)。

        (2)報(bào)表設(shè)計(jì)及實(shí)現(xiàn):Web應(yīng)用程序?qū)崿F(xiàn)動(dòng)態(tài)報(bào)表,開(kāi)始考慮用ASP.NET的數(shù)據(jù)控件Repeater,可以自由定義靈活的顯示方式,但通常比較麻煩,而且在代碼中字段名要出現(xiàn),即:使用數(shù)據(jù)容器Container.DataItem("字段名")方式來(lái)顯示數(shù)據(jù)內(nèi)容,降低了數(shù)據(jù)安全性。我們的做法是利用Bussiness Object 公司開(kāi)發(fā)的專(zhuān)業(yè)報(bào)表軟件CrystalReports10設(shè)計(jì)報(bào)表,通過(guò)ODBC數(shù)據(jù)源與數(shù)據(jù)庫(kù)連接,生成報(bào)表文件(*.rpt)后,在前臺(tái)利用報(bào)表控件CrystalReprotViewer,將報(bào)表文件加載到頁(yè)面實(shí)現(xiàn)各種報(bào)表。這種把數(shù)據(jù)源、報(bào)表文件、和頁(yè)面顯示文件分開(kāi)獨(dú)立實(shí)現(xiàn),不僅豐富了報(bào)表顯示樣式和提高了網(wǎng)絡(luò)報(bào)表生成效率,而且極大地提高了訪問(wèn)數(shù)據(jù)的安全性。

        (3)用戶口令存儲(chǔ)問(wèn)題:不要將實(shí)際的口令存儲(chǔ)在數(shù)據(jù)庫(kù)表中,因?yàn)榭诹钪苯臃旁跀?shù)據(jù)庫(kù)或文件中存在安全隱患,因此要存儲(chǔ)加密后的口令。使用時(shí),例如當(dāng)用戶登錄時(shí),對(duì)口令加密,然后與數(shù)據(jù)庫(kù)中存放的加密口令進(jìn)行比較。實(shí)現(xiàn)步驟如下:

        首先,導(dǎo)入命名空間:<%@ Import Namespace="System.Web.Security" %>

        其次,編寫(xiě)加密函數(shù)EncrytPwd:

        Function EncrytPwd(Pwd as String,PwdFormat as String)

        If PwdFormat="MD5" then

        '下面一行得到用MD5算法加密后的字符串

        EncrytPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(Pwd,"MD5")

        '下面一行得到用SHA1算法加密后的字符串

        Else if PwdFormat="SHA1"then

        EncrytPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(Pwd,"SHA1")

        End if

        End Function

        2.2.2 配置文件web.config 的安全設(shè)置

        web.config文件是一個(gè)簡(jiǎn)單的XML文件,專(zhuān)門(mén)用于為應(yīng)用程序配置系統(tǒng)設(shè)定、安全性設(shè)定、應(yīng)用程序設(shè)定和會(huì)話設(shè)定。下面分5個(gè)內(nèi)容介紹安全實(shí)踐策略。

        (1) 數(shù)據(jù)庫(kù)連接字符串常量:Web應(yīng)用程序網(wǎng)頁(yè)要大量用到數(shù)據(jù)庫(kù)連接,為了提高程序安全性、通用性和可移植性,在配置文件中設(shè)置數(shù)據(jù)庫(kù)連接字符串常量是很好的方法,在應(yīng)用程序的web.config文件中添加如下語(yǔ)句:

        <appSettings>

        <addkey="sqlconntion"value="server=localhost;uid=sa;pwd=sa;database=yy;"/>

        </appSettings>

        網(wǎng)頁(yè)文件使用時(shí),用下列代碼實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接:

        Dim strConn As String

        strConn=ConfigurationSettings.AppSettings("sqlconntion ")'獲取數(shù)據(jù)庫(kù)連接字符串

        (2) 認(rèn)證和授權(quán):HTML表單驗(yàn)證(Forms Authentication),是向開(kāi)發(fā)人員提供確認(rèn)客戶憑證并控制訪問(wèn)權(quán)限的技術(shù)。在應(yīng)用程序的web.config文件中添加如下語(yǔ)句:

        <system.web>

        <authenticationmode="Forms">

        <formsname="admin_ad"loginUrl="pxb_login.aspx"protection="All"/>

        </authentication>

        </system.web>

        授權(quán):就是讓用戶擁有有效憑證,允許或拒絕訪問(wèn)Web應(yīng)用程序。在web.config中添加如下語(yǔ)句:

        <authorization>

        <denyusers="*"/>

        <allowusers="用戶列表"/>

        </authorization>

        (3)虛擬路徑的設(shè)置:不同用戶對(duì)不同目錄訪問(wèn)權(quán)限不同,可以設(shè)定虛擬目錄來(lái)實(shí)現(xiàn)。

        <locationpath="log">

        <system.web>

        <authorization>

        <allowusers="*"/>

        <authorization>

        <system.web>

        </location>

        (4)設(shè)置調(diào)試模式提高安全策略:默認(rèn)情況下,錯(cuò)誤信息保存在棧中。如果開(kāi)啟調(diào)試模式,ASP.NET在運(yùn)行中發(fā)生錯(cuò)誤時(shí),會(huì)顯示錯(cuò)誤行號(hào),方便調(diào)試。可以在頁(yè)面或web.config文件中開(kāi)啟調(diào)試模式。例如:

        <%@pagedebug=”true”%>'開(kāi)啟頁(yè)面級(jí)調(diào)試模式

        <compilationdefaultLanguage="VB"debug="true"/>

        '開(kāi)啟應(yīng)用程序級(jí)調(diào)試模式

        但發(fā)布程序時(shí),要禁用調(diào)試模式,否則出錯(cuò)時(shí),有泄露后臺(tái)代碼的隱患。

        (5)頁(yè)面出錯(cuò)處理策略:出錯(cuò)時(shí)轉(zhuǎn)向統(tǒng)一的出錯(cuò)頁(yè)面,而不必在每個(gè)網(wǎng)頁(yè)中寫(xiě)代碼,控制轉(zhuǎn)向出錯(cuò)頁(yè)面,避免了程序運(yùn)行期間任何未處理的意外發(fā)生時(shí),錯(cuò)誤頁(yè)面代碼泄露或使用戶不知所云的尷尬發(fā)生。頁(yè)面出錯(cuò)處理可以應(yīng)用下列策略實(shí)現(xiàn):

        (A)定制出錯(cuò)網(wǎng)頁(yè)

        <customErrorsdefault-Redirect="error.htm"mode="remoteonly"/>

        這個(gè)設(shè)置可以保證當(dāng)錯(cuò)誤出現(xiàn)時(shí),本地用戶訪問(wèn)默認(rèn)出錯(cuò)頁(yè),遠(yuǎn)程用戶訪問(wèn)自定義的error.htm網(wǎng)頁(yè)。

        (B)處理特別的HTTP請(qǐng)求

        對(duì)于HTTP錯(cuò)誤狀態(tài)代碼,例如:403禁止,404無(wú)法找到,500服務(wù)器錯(cuò)誤等,可以自定義各自的出錯(cuò)處理頁(yè)面。如下所示:

        <errorstatuscode=”403”redirect=”/error/err_support.htm”/>

        <errorstatuscode=”404”redirect=”/error/err_nofound.htm”/>

        <errorstatuscode=”403”redirect=”/error/err_noaccess.htm”/>

        2.2.3界面設(shè)計(jì):代碼分離和自定義控件

        (1)代碼分離:將程序代碼和HTML內(nèi)容分離,不僅能增強(qiáng)頁(yè)面的條理性、易讀性和團(tuán)隊(duì)開(kāi)發(fā)的容易程度,更重要提高網(wǎng)頁(yè)安全性。如:

        前臺(tái)aspx網(wǎng)頁(yè):peixun_base_

        xiangmu.aspx.aspx

        <%@RegisterTagPrefix="iewc"Namespace="Microsoft.Web.UI.WebControls"

        Assembly="microsoft.web.ui.webcontrols"%>

        <%@PageLanguage="vb"AutoEventWireup="false"Codebehind=

        "peixun_base_xiangmu.aspx.vb"Inherits="pxb.MUTI"%>

        而后臺(tái)的peixun_base_xiangmu.aspx.vb文件,專(zhuān)門(mén)編寫(xiě)代碼,實(shí)現(xiàn)代碼和HTML內(nèi)容分離。

        (2)自定義控件:可以根據(jù)需要編寫(xiě)自定義控件,更好地提供可重用的封裝邏輯,在使用自定義控件前,需要將定義它們的類(lèi)文件編譯成動(dòng)態(tài)庫(kù),即:

        vbc/t:library/r:system.dll/r:system.web.dll/out:pxbcontrols.dllcontrol.vb

        將編寫(xiě)好的類(lèi)文件(.vb)編譯成動(dòng)態(tài)庫(kù)(.dll),可以供以后多次使用,由于封裝了邏輯,且生成庫(kù),所以安全性得到保障。

        除上述外,必須要重視記錄日志。日志文件分系統(tǒng)日志和用戶自定義日志。系統(tǒng)日志,如建立數(shù)據(jù)庫(kù)日志文件;自定義日志文件:可以利用global.asax文件的session_onStart()事件與session_onEnd()事件實(shí)現(xiàn)自定義日志文件維護(hù),例如:記錄訪問(wèn)用戶的登錄名,訪問(wèn)時(shí)間,IP地址等信息,在應(yīng)用程序根目錄的global.asax文件內(nèi)添加如下代碼:

        <%@ImportNamespace="System.IO"%>

        SubSession_onStart(SenderAsObject,EAsEventArgs)

        '每一位客戶登錄時(shí)觸發(fā)該事件

        sw=NewStreamWriter(server.mappath("log/log.txt"),True,Encoding.Default)

        '將客戶IP保存到Session中

        Session("IP")=Request.ServerVariables("REMOTE_ADDR") sw.Writeline(Now()&"-用戶"&Session("IP")&"進(jìn)入")

        sw.Close

        EndSub

        SubSession_OnEnd(SenderAsObject,EAsEventArgs)

        '當(dāng)每一位客戶超過(guò)會(huì)話時(shí)間沒(méi)有和服務(wù)器交互,或關(guān)閉瀏覽器后觸發(fā)該事件

        sw=NewStreamWriter(server.mappath("log/log.txt"),True,Encoding.Default)

        sw.Writeline(Now()&"-用戶"&Session("IP")&"退出")

        sw.Close

        EndSub

        2.3 發(fā)布運(yùn)行階段:主要考慮如下方面

        (1) 關(guān)閉調(diào)試模式;

        (2) 備份轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)文件和日志文件;

        (3) 密碼要不斷更新;

        (4) 及時(shí)打補(bǔ)丁程序。

        3總結(jié)

        綜上所述,基于ASP.NET的Web網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā),在充分利用ASP.NET的安全機(jī)制、數(shù)據(jù)庫(kù)安全控制、管理員網(wǎng)絡(luò)安全防范意識(shí)的基礎(chǔ)上,可以極大提高Web應(yīng)用程序的安全性能。

        參考文獻(xiàn)

        [1] [美]Steven A.Smith等.用實(shí)例學(xué)ASP.NET.馬燕,閆立軍等,譯.北京:電子工業(yè)出版社,2002.

        [2] [美]Macro Bellinaso Kevin Hoffman.ASP.NET Web站點(diǎn)高級(jí)編程.康博,譯.北京:清華大學(xué)出版社,2002.

        [3] [美]John Kauffman 等. ASP.NET數(shù)據(jù)庫(kù)入門(mén)經(jīng)典. 康博,譯.北京:清華大學(xué)出版社,2002.

        [4] 章立民. 用實(shí)例學(xué) Crystal Report for Visual Studio.NET.北京:電子工業(yè)出版社,2004.

        猜你喜歡
        視圖
        有史以來(lái)最詳細(xì)的火星表面視圖上線啦
        軍事文摘(2022年24期)2022-12-30 11:44:16
        關(guān)于SQL視圖優(yōu)點(diǎn)和缺點(diǎn)的淺探
        5.3 視圖與投影
        視圖
        Y—20重型運(yùn)輸機(jī)多視圖
        SA2型76毫米車(chē)載高炮多視圖
        《投影與視圖》單元測(cè)試題
        Django 框架中通用類(lèi)視圖的用法
        你會(huì)畫(huà)左視圖嗎
        《視圖與投影》易錯(cuò)題專(zhuān)練
        巨臀中文字幕一区二区| 亚洲精品一区二区国产精华液| 性无码免费一区二区三区在线| 久久精品国产精品亚洲毛片| 国产杨幂AV在线播放| 国产精品人妻熟女男人的天堂| 精品国产青草久久久久福利| 国产真实乱人偷精品人妻| 极品少妇一区二区三区四区视频| 日本丰满少妇xxxx| 国产午夜精品久久久久免费视| 人妻被猛烈进入中文字幕| 久久精品国产亚洲av四区| 国产夫妇肉麻对白| 国产精品揄拍100视频| 久久国产精品男人的天堂av | 先锋五月婷婷丁香草草| 毛片免费全部无码播放| 国产美女三级视频网站| 户外精品一区二区三区| 无码一区二区三区亚洲人妻| 亚洲AV无码一区二区三区ba| 久久精品国产福利亚洲av| 国产自国产自愉自愉免费24区| 亚洲欧洲偷自拍图片区| 亚洲精品综合色区二区| 精华国产一区二区三区| 又爽又黄又无遮挡的视频| 最新国产在线精品91尤物| 中文字幕色婷婷在线视频| 高清毛茸茸的中国少妇| 丰满人妻妇伦又伦精品国产| 狠狠亚洲超碰狼人久久老人| 日本男人精品一区二区| 精品国产乱码久久久久久1区2区| 国产亚洲精品日韩综合网| 国产韩国一区二区三区| 国产免费艾彩sm调教视频| 久久精品国产丝袜| 亚洲福利视频一区二区三区| 人人做人人爽人人爱|