日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

增強(qiáng)Web的安全性

通過互聯(lián)網(wǎng),人們可以做網(wǎng)上交易等各種事情 。如何使信息不被竊取、站點(diǎn)不被破壞,就成了網(wǎng)絡(luò)應(yīng)用開發(fā)者、網(wǎng)管員的重要責(zé)任 。本文介紹了幾種提高Web站點(diǎn)安全的原則和方法 。
一、應(yīng)用環(huán)境
一般來說,提供數(shù)據(jù)庫應(yīng)用服務(wù)的Web站點(diǎn)主要由操作系統(tǒng)服務(wù)器、數(shù)據(jù)庫服務(wù)器和Web服務(wù)器三項(xiàng)構(gòu)成,由此,我們對Web站點(diǎn)的安全設(shè)置就可以從這三方面入手 ?;诓煌沫h(huán)境配置的Web解決方案,其安全考慮各有側(cè)重,但基本的原則是大致相同的 。下面我們以基于Windows2000 Advanced Server、Internet信息服務(wù)5.0和SQL Server 2000環(huán)境構(gòu)建Web解決方案為例,討論Web站點(diǎn)的安全問題 。此外,由于目前大多數(shù)網(wǎng)站開發(fā)都使用Microsoft的.Net Framework,我們將.Net Framework也考慮進(jìn)去 。
二、解決方法
1.Web應(yīng)用程序?qū)影踩?br /> Web應(yīng)用程序?qū)影踩词窃谶M(jìn)行Web應(yīng)用開發(fā)時(shí)應(yīng)該考慮的安全因素,這里包括窗體身份驗(yàn)證、輸入有效性驗(yàn)證、使用參數(shù)化存儲過程、輸出數(shù)據(jù)HTML編碼、信息加密等內(nèi)容 。
(1) 窗體身份驗(yàn)證
窗體身份驗(yàn)證即是當(dāng)用戶請求一個(gè)安全頁面時(shí),系統(tǒng)要對其進(jìn)行判斷,如果該用戶已經(jīng)登錄系統(tǒng)并尚未超時(shí),系統(tǒng)將返回此頁面給請求用戶; 反之如該用戶尚未登錄,系統(tǒng)就要將此用戶重定向到登錄頁面 。
以上所述功能的實(shí)現(xiàn)只需對Web.config文件進(jìn)行如下配置即可 。

如果系統(tǒng)中某些頁面不希望被匿名身份用戶訪問,可以對Web.config進(jìn)行如下配置:

……

……
對進(jìn)行身份驗(yàn)證的登錄頁本身,應(yīng)該采取兩步方式驗(yàn)證用戶存在且密碼正確,且不可為圖簡便而使用一條SQL語句進(jìn)行驗(yàn)證(如果攻擊者攻破網(wǎng)站,并將SQL語句的where子句末尾加上一段永遠(yuǎn)為真的判斷語句,則無論何時(shí)他都可以通過身份驗(yàn)證) 。
存在安全隱患的身份驗(yàn)證語句是:select * from users where name = namestr and password = passwdstr 。
比較安全的用戶身份驗(yàn)證應(yīng)該是:判斷用戶是否存在用“select name,password from users where name = namestr” 。
【增強(qiáng)Web的安全性】如用戶存在,將返回一條包括用戶名和密碼的記錄,然后判斷由數(shù)據(jù)庫返回的密碼和用戶輸入的密碼值:
if password = passwdstr {
//通過驗(yàn)證后的程序代碼
……
}else{
//未通過驗(yàn)證后的程序代碼
……
}
為加強(qiáng)用戶名、密碼等這些敏感信息在公網(wǎng)上的安全傳輸,應(yīng)通過安全套接字層加密后再返回給Web服務(wù)器 。
(2) 輸入有效性驗(yàn)證
輸入有效性驗(yàn)證即是對所有用戶輸入的字符范圍進(jìn)行限制,以防可用于向Web站點(diǎn)發(fā)送惡意腳本的字符被禁止使用 。
通過ASP.NET的System.Text.RegularExpressions.Regex 類提供的功能,用正則表達(dá)式對數(shù)據(jù)進(jìn)行驗(yàn)證,如下所示:
Regex isNumber = new Regex(“^[0-9] $”);
if(isNumber.Match(inputData) ) {
// 使用它
……
}
else {
// 丟棄它
……
}
正則表達(dá)式是用于匹配文本模式的字符和語法元素集合,用于確保查詢字符串是正確且無惡意的 。
(3) 使用參數(shù)化存儲過程
使用參數(shù)化存儲過程是指在Web應(yīng)用中,盡可能將對數(shù)據(jù)庫的操作使用存儲過程來完成,而不是動態(tài)構(gòu)造SQL語句 。
將與數(shù)據(jù)庫的交互限制到存儲過程,這通常是增強(qiáng)Web安全的一個(gè)最佳方案 。如果不存在存儲過程,則 SQL 查詢必須由 Web 應(yīng)用程序動態(tài)構(gòu)造 。如果 Web 層遭到破壞,攻擊者就可以向數(shù)據(jù)庫查詢中插入惡意命令,以檢索、更改或刪除數(shù)據(jù)庫中存儲的數(shù)據(jù) 。使用存儲過程,Web 應(yīng)用程序與數(shù)據(jù)庫的交互操作僅限于通過存儲過程發(fā)送的幾個(gè)特定的嚴(yán)格類型參數(shù) 。每當(dāng)開發(fā)人員使用.Net Framework 調(diào)用存儲過程時(shí),系統(tǒng)都會對發(fā)送到此存儲過程的參數(shù)進(jìn)行檢查,以確保它們是存儲過程可接受的類型(如整數(shù)、8 個(gè)字符的字符串等) 。這是 Web 層有效性驗(yàn)證上的又一個(gè)保護(hù)層,可確保所有輸入數(shù)據(jù)格式正確,且不能自行構(gòu)造為可操作的 SQL 語句 。

推薦閱讀