程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET安全問題--創建安全的Web應用程序

ASP.NET安全問題--創建安全的Web應用程序

編輯:關於ASP.NET

把一個問題說清楚,是要有前提的,也要大家有一些通過的詞匯,就像大家談OO,就知道談的面向對象,以及面向對象的一些特征;懂設計模式的,一聽到"觀察者",就立馬知道什麼意思。

一.下面看看安全的一些概念:

首先,我們來看看什麼是安全性?

我們常常提起“實現安全性”“創建安全的系統”。所以安全性一般是定義很多,如:安全性就是保證系統可以完全按照我們想要的方式運行;安全性就是防止以我們不希望的方式運行系統...定義很多,但是不知道大家有沒有發現,我們理解的安全的定義很狹窄的。怎麼說?我們一般認為安全就是這樣的:采取一定的措施(主要是編程代碼的措施)處理程序運行時的意外,或者防止意外發生。但是安全的問題不僅僅只是代碼的問題,所以在安全編程方面,我們要考慮的更多。

什麼是安全

我們不能保證一個系統絕對的安全,不可能做到100%的安全。安全的定義的受到很多的限制,首先我們來看看一個例子。

我們都用過銀行的ATM機,如果有人撿到了我們的卡想要盜取我們的錢,那麼他只有猜我們的密碼。如果密碼的長度只有一位數,那麼撿卡人第一次猜對的概率就是1/10,他只要十次就可以盜取我們的錢(假設可以不限次數的猜),那麼系統的安全行很差;如果密碼是2位,那麼密碼就有100中可能,那麼撿卡人第一次才對的幾率就是1/100,第二次就是1/99,第三次1/98...系統的安全行也很差.

如果把密碼的嘗試限制在3次,如果密碼為2位數,那麼密碼被猜出的幾率就大大的減小了:

第一次猜中的幾率就是1/100

第二次猜中(第一次沒有中)的幾率就是(99/100) * (1/99)=0.01

第三次猜中(前兩次不中)的幾率就是(99/100)*(98/99)*(1/98)=0.01

三次之內猜中的幾率就是:0.01+1.01+0.01=0.03

所以,當我們限制了嘗試的次數的時候,系統就比之前安全了一些,但是系統還並不是很安全,只能說比之前稍微的好了點,但是風險依然很大。

為了使得系統更加的安全,就要減小系統的密碼被猜出的可能行,我們可以從兩個方面著手:

1.使得密碼嘗試的次數減小,如用戶只能輸入一次密碼;

2.加大密碼的位數,如6位。這樣密碼被猜出的幾率就更加的小了,風險也小了很多,系統的安全行就又提高了。所以,我們常說安全不安全的,都只是一個相對的概念。說了這麼多,就是要說一點:不要把安全看死了,安全不安全要看我們的環境。

在談後面的話題之前,讓我們來共享一些術語:

脆弱性是系統的一個特征,它可能會使得應用系統不安全按照我們預想的方式運行。一般表示系統不好的特征。

威脅就是指利用錯人性破環系統安全的可能行。

利用就是利用脆弱行的方法。

總結一句話就是:脆弱行導致了威脅,利用則實現了威脅,簡言之,攻擊。

二、Web應用中的安全問題

首先我們就看看對Web的攻擊。攻擊有很多種的,其中一部分可以使用ASP.NET代碼進行防范的,但是其他的攻擊方式還是可以產生破壞的,如直接攻擊服務器。下面就來看典型的例子。

我們之前說過,攻擊就是利用系統的脆弱性以實現一定的威脅。攻擊的結果也很多,如:

未經授權的訪問--用戶獲取了更多的權限,從而可以將應用程序用於其他的途徑,如果獲取了網站的管理員的密碼,散布政治言論。

代碼執行--在目標系統上運行惡意代碼,而且還會導致其他的威脅,如木馬。

拒絕服務--合法用戶被禁止訪問應用程序

信息失竊--機密的信息被盜取

破壞信息--信息遭到修改。如,站點被塗改,發布攻擊性的消息和政治言論。

下面我們就來看看常見的一些脆弱性,以及對它們的利用,以及引起的威脅。

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