程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 用ASP.NET 1.1 新特征防止Script攻擊

用ASP.NET 1.1 新特征防止Script攻擊

編輯:.NET實例教程

網站的安全,很多時候,幾乎代表了一個單位網絡的安全。對於將網站作為企業對外形象的企業或者政府而言,網站安全更加重要。現在很多網站都安裝了防火牆等安全設備,可是,一些簡單的進攻,反而頗為讓人傷腦筋。比如,通過網站,提交惡意代碼,這就是比較難以防范的一種進攻,一個比較簡單的具體舉例,在需要用戶提交EMAil地址的數據項,如果用戶提交以下信息:<SCRIPT>alert(“hello from script”)</SCRIPT>,結果會怎樣呢?當別的用戶進入含有這個信息的頁面的時候,就會見到一個彈出信息,這是以上提交的惡意代碼直接運行的結果,如果這樣的代碼稍微改動,更加復雜一點,破壞效果自然更加驚人。程序員在設計程序的時候,如果沒有較好考慮對用戶提交信息進行適當的檢測,很容易就會因為程序的不健全而導致不可預料的後果。在ASP和ASP.NET1.0或者其他任何開發工具中,我們不得不在程序中采用一些技巧來防范用戶提交的惡意代碼,而程序設計的原則就是“假定每一個用戶提交的信息都是惡意的”,所以,程序員不得不拿出部分精力來做提交信息的檢測工作。而在最新發布的ASP.Net1.1中,這樣的檢測就簡單甚至是不必了。現在,我們來看一個具體的例子:

以上的代碼很簡單,就是將用戶輸入的信息進行現實,運行以後是這樣的:

以上我們輸入一個簡單的“Hello world”,可以看到,頁面很正常的進行了顯示,那麼,如果我們輸入“<script>alert("hello!")</script>”會怎樣呢?現在就來看看運行結果:

很明顯,是一個錯誤信息:“potentially dangerous Request.Form value was detected…”意思是用戶提交的信息有潛在的危險,所以,不予提交。這就是ASP.Net的最新特征之一,將用戶提交信息的潛在危險排除到最小,當然,要使用這個最新特征是很簡單的,直接在頁面中可以這樣設定:

<%@ Page validateRequest="true" %>

或者,也可以在網站配置文件Web.config中設定:

<configuration>

<system.web>

<pages validateRequest="true" />

</system.web>

</configuration>

當然,要取消這個特征也是可以的,直接在以上設定中將False改為True就可以了。我們強烈建議將以上特征打開,設置為True,對每一個用戶的輸入進行檢測。現在,我們看看如果用戶現在關閉以上特征,頁面運行會有怎樣的結果:

可以看到,以上頁面運行以後,出現了用戶輸入直接運行的結果:彈出一個提示信息。

那麼,如果用戶不希望使用ASP.Net1.1的以上新特征,而又希望可以比較好的實現程序的安全性,應該怎樣做呢?可以直接使用Server.HtmlEncode(string)來現實,將所有用戶的輸入信息轉換為Html格式,也就是原封不動(現實出來和輸入的一樣)的現實用戶輸入的信息而不對惡意代碼進行運行。現在,我們來看一個舉例:

以上代碼和前面提到的代碼唯一的區別就是對用戶輸入進行了Html編碼,運行結果如下:

我們可以看到,用戶帶有潛在危險的輸入,已經完全被避免了。以上方式和采用ASP.NET1.1的新特征相比,有什麼不一樣呢?以上方式依然接受用戶輸入,只是將危險代碼進行了修改;而使用ASP.Net1.1的新特征,危險代碼是完全拒之門外的,不會對數據進行處理。

以上我們試驗了ASP.NET1.1的最新功能,並將它與別的技術進行了對比。編程中,我們建議直接使用ASP.Net1.1提供的新特征來實現危險排除,而不是采用Html編碼的方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved