国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

楊曉明 雷光輝 何青建

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

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

1 前言

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

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

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

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

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

2 安全策略實踐

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

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

2.2設(shè)計開發(fā)階段

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

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

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

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

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

(3)用戶口令存儲問題:不要將實際的口令存儲在數(shù)據(jù)庫表中,因為口令直接放在數(shù)據(jù)庫或文件中存在安全隱患,因此要存儲加密后的口令。使用時,例如當(dāng)用戶登錄時,對口令加密,然后與數(shù)據(jù)庫中存放的加密口令進(jìn)行比較。實現(xiàn)步驟如下:

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

其次,編寫加密函數(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文件是一個簡單的XML文件,專門用于為應(yīng)用程序配置系統(tǒng)設(shè)定、安全性設(shè)定、應(yīng)用程序設(shè)定和會話設(shè)定。下面分5個內(nèi)容介紹安全實踐策略。

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

<appSettings>

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

</appSettings>

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

Dim strConn As String

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

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

<system.web>

<authenticationmode="Forms">

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

</authentication>

</system.web>

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

<authorization>

<denyusers="*"/>

<allowusers="用戶列表"/>

</authorization>

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

<locationpath="log">

<system.web>

<authorization>

<allowusers="*"/>

<authorization>

<system.web>

</location>

(4)設(shè)置調(diào)試模式提高安全策略:默認(rèn)情況下,錯誤信息保存在棧中。如果開啟調(diào)試模式,ASP.NET在運行中發(fā)生錯誤時,會顯示錯誤行號,方便調(diào)試??梢栽陧撁婊颍鳎澹猓悖铮睿妫椋缥募虚_啟調(diào)試模式。例如:

<%@pagedebug=”true”%>'開啟頁面級調(diào)試模式

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

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

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

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

(A)定制出錯網(wǎng)頁

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

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

(B)處理特別的HTTP請求

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

<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è)計:代碼分離和自定義控件

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

前臺aspx網(wǎng)頁: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"%>

而后臺的peixun_base_xiangmu.aspx.vb文件,專門編寫代碼,實現(xiàn)代碼和HTML內(nèi)容分離。

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

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

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

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

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

SubSession_onStart(SenderAsObject,EAsEventArgs)

'每一位客戶登錄時觸發(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)每一位客戶超過會話時間沒有和服務(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ā)布運行階段:主要考慮如下方面

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

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

(3) 密碼要不斷更新;

(4) 及時打補丁程序。

3總結(jié)

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

參考文獻(xiàn)

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

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

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

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

猜你喜歡
視圖
三視圖計算的兩種考查類型
關(guān)閉Excel 2013“受保護(hù)的視圖”模式
Y—20重型運輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
《投影與視圖》單元測試題
投影與視圖考點鑒賞
在Oracle數(shù)據(jù)庫中實現(xiàn)物化視圖
Django 框架中通用類視圖的用法
《視圖與投影》易錯題專練
《視圖與投影》綜合測試題
柘荣县| 常山县| 黔西县| 财经| 博白县| 衡阳市| 山东| 桐乡市| 衡南县| 怀柔区| 白沙| 大庆市| 荆门市| 平阴县| 昆明市| 徐汇区| 随州市| 崇义县| 韶山市| 丽水市| 饶河县| 棋牌| 那坡县| 大田县| 新民市| 仁寿县| 灵宝市| 西城区| 湖口县| 甘孜| 内丘县| 阳谷县| 大姚县| 静安区| 兴文县| 格尔木市| 开封县| 中牟县| 阜城县| 泾阳县| 广元市|