欧美一级特黄aaaaaaa在线观看-欧美一级特黄aaaaaa在线看片-欧美一级特黄aa大片-欧美一级特黄刺激大片视频-深夜久久-深夜激情网站

熱門關鍵字:  聽力密碼  新概念美語  單詞密碼  巧用聽寫練聽力  零起點

程序員十大安全技巧

來源:轉自:http://xch6636.51.net 作者: 時間:2010-04-06


  4. 不要請求 sa 權限  

  我們要討論的最后一種輸入信任攻擊是 SQL 插入代碼。許多開發人員編寫這樣的代碼,即獲取輸入并使用該輸入來建立 SQL 查詢,進而與后臺數據存儲(如 Microsoft? SQL Server? 或 Oracle)進行通信。

  請看以下代碼片段:


void DoQuery(string Id) {
SqlConnection sql=new SqlConnection(@"data source=localhost;" +
"user id=sa;password=password;");
sql.Open();
sqlstring= "SELECT hasshipped" +
" FROM shipping WHERE id='" + Id + "'";
SqlCommand cmd = new SqlCommand(sqlstring,sql);
???

  這段代碼有三個嚴重缺陷。首先,它是以系統管理員帳戶 sa 建立從 Web 服務到 SQL Server 的連接的。不久您就會看到這樣做的缺陷所在。第二點,注意使用“password”作為 sa 帳戶密碼的聰明做法!
但真正值得關注的是構造 SQL 語句的字符串連接。如果用戶為 ID 輸入 1001,您會得到如下 SQL 語句,它是完全有效的。

  SELECT hasshipped FROM shipping WHERE id = '1001'

  但攻擊者比這要有創意得多。他們會為 ID 輸入一個“'1001' DROP table shipping --”,它將執行如下查詢:

SELECT hasshipped FROM
shipping WHERE id = '1001'
DROP table shipping -- ';

  它更改了查詢的工作方式。這段代碼不僅會嘗試判斷是否裝運了某些貨物,它還會繼續 drop(刪除)shipping 表!操作符 -- 是 SQL 中的注釋操作符,它使攻擊者能夠更容易地構造一系列有效但危險的 SQL 語句!

  這時您也許會覺得奇怪,怎么任何一個用戶都能刪除 SQL Server 數據庫中的表呢。當然,您是對的,只有管理員才能做這樣的工作。但這里您是作為 sa 連接到數據庫的,而 sa 能在 SQL Server 數據庫上做他想做的任何事。永遠不要在任何應用程序中以 sa 連接 SQL Server;正確的做法是,如果合適,使用 Windows 集成的身份驗證,或者以一個預先定義的具有適當權限的帳戶連接。

  修復 SQL 插入代碼問題很容易。使用 SQL 存儲過程及參數,下面的代碼展示了創建這種查詢的方法 - 以及如何使用正則表達式來確認輸入有效,因為我們的交易規定貨運 ID 只能是 4 到 10 位數字:

Regex r = new Regex(@"^d{4,10}$");
if (!r.Match(Id).Success)
throw new Exception("無效 ID");

SqlConnection sqlConn= new SqlConnection(strConn);
string str="sp_HasShipped";
SqlCommand cmd = new SqlCommand(str,sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID",Id);

  緩沖區溢出、跨站點腳本和 SQL 插入代碼攻擊都是信任輸入問題的示例。所有這些攻擊都能通過一種機制來減輕危害,即認為所有輸入都是有害的,除非獲得證明。

  5. 注意加密代碼!

  下面我們來看些會讓我們吃驚的東西。我發現我們檢查的安全代碼中百分之三十以上都存在安全漏洞。最常見的漏洞可能就是自己的加密代碼,這些代碼很可能不堪一擊。永遠不要創建自己的加密代碼,那是徒勞的。不要認為僅僅因為您有自己的加密算法其他人就無法破解。攻擊者能使用調試器,他們也有時間和知識來確認系統如何工作 - 通常在幾小時內就會破解它們。您應該使用 Win32? 的 CryptoAPI,System.Security.Cryptography 命名空間提供了大量優秀且經過測試的加密算法。

  6. 減少自己被攻擊的可能性

  如果沒有百分之九十以上的用戶要求,則不應默認安裝某一功能。Internet Information Services (IIS) 6.0 遵循了這一安裝建議,您可以在這個月發布的 Wayne Berry 的文章“Innovations in Internet Information Services Let You Tightly Guard Secure Data and Server Processes”中讀到相關內容。這種安裝策略背后的思想是您不會注意自己并未使用的服務,如果這些服務正在運行,則可能被其他人利用。如果默認安裝某功能,則它應在最小授權原則下運行。也就是說,除非必要,否則不要允許使用管理員權限運行應用程序。最好遵循這一忠告。

  7. 使用最小授權原則

  出于若干原因,操作系統和公共語言運行時有一個安全策略。很多人以為此安全策略存在的主要原因是防止用戶有意破壞:訪問他們無權訪問的文件、重新配置網絡以達到他們的要求以及其他惡劣行為。的確,這種來自內部的攻擊很普遍,也需要防范,但還有另一個原因需要嚴守這一安全策略。即在代碼周圍建立起防范壁壘以防止用戶有意或(正如經常發生的)無意的操作對網絡造成嚴重破壞。例如,通過電子郵件下載的附件在 Alice 的機器上執行時被限制為只能訪問 Alice 可以訪問的資源。如果附件中含有特洛伊木馬,那么好的安全策略就是限制它所能產生的破壞。 當您設計、建立并部署服務器應用程序時,您不能假設所有請求都來自合法用戶。如果一個壞家伙發送給您一個惡意請求(但愿不會如此)并使您的代碼產生惡劣操作,您會希望您的應用程序擁有所有可能的防護來限制損害。因此我們認為,您的公司實施安全策略不僅是因為它不信任您或您的代碼,同時也是為了保護不受外界有企圖的代碼的傷害。

  最小授權原則認為,要在最少的時間內授予代碼所需的最低權限。也就是說,任何時候都應在您的代碼周圍豎起盡可能多的防護墻。當發生某些不好的事情時 - 就象 Murphy 定律保證的那樣 - 您會很高興這些防護墻都處在合適的位置上。因此,這里就使用最小授權原則運行代碼給出了一些具體方法。

  為您的服務器代碼選擇一個安全環境,僅允許其訪問完成其工作所必需的資源。如果您代碼中的某些部分要求很高的權限,請考慮將這部分代碼分離出來并單獨以較高的權限運行。為安全分離這一以不同的操作系統驗證信息運行的代碼,您最好在一個單獨的進程(運行在具有更高權限的安全環境中)中運行此代碼。這意味著您將需要進程間通訊(如 COM 或 Microsoft .NET 遠程處理),并且需要設計該代碼的接口以使往返行程最小。
最新評論共有 0 位網友發表了評論
發表評論
評論內容:不能超過250字,需審核,請自覺遵守互聯網相關政策法規。
用戶名: 密碼:
匿名?
注冊
數據結構——C語言(微課版)數據通信與計算機網絡(第三版)用英語介紹中國傳統文化UML系統建模及系統分析與設計(第二版)電工電子技術實驗指導書普通高校專升本考試——公共英語(一)大學生職業生涯發展與規劃電工學(多學時)學習輔導與習題全解
主站蜘蛛池模板: 亚洲国产成人成上人色 | 中国欧美日韩一区二区三区 | 91精品国产高清久久久久久 | 日产一一到六区麻豆 | 欧美日韩亚洲区久久综合 | 国产精品日韩欧美久久综合 | 国产综合视频在线观看 | 日本一区二区三区精品国产 | 男人精品网站一区二区三区 | 日韩激情在线 | 91福利国产在线在线播放 | 久久久久久久久久福利 | 2021最新久久久视精品爱 | 久久五月激情婷婷日韩 | 综合五月婷婷 | 亚洲综合激情另类专区 | 中文字幕123 | 国产精品对白刺激 | aa级国产女人毛片水真多 | 色哟哟视频在线观看网站 | 欧美另类xxx | www成人国产在线观看网站 | 国产精品大白天新婚身材 | 欧美大成色www永久网站婷 | 精品视频免费在线 | 欧美1314www伊人久久香网 | 亚洲激情在线 | 伊人中文字幕在线观看 | 精品久久久久久亚洲精品 | 国产在线看不卡一区二区 | 色婷婷狠狠 | 国产精品中文 | 99精品免费视频 | 国产精自产拍久久久久久蜜 | 久久99久久精品国产只有 | 91免费片 | 四虎免费视频 | 亚洲福利国产 | 男人进去女人爽免费视频国产 | 狠狠干2015| 2021国产精品成人免费视频 |