OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第十點的弱點,做一些簡單的說明和示範:
10. Failure to Restrict URL Access:應用程式敏感地區是被保護的Links或是URLs,而這些是不會提供給未被授權的使用者。這也容易讓攻擊者利用這項弱點進入,並進行未被授權的行為。
寬廣無際的技術翰海中,能遺忘的就把它遺忘掉吧~ 無法遺忘的,總會有個角落,靜靜地等候著~
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第十點的弱點,做一些簡單的說明和示範:
10. Failure to Restrict URL Access:應用程式敏感地區是被保護的Links或是URLs,而這些是不會提供給未被授權的使用者。這也容易讓攻擊者利用這項弱點進入,並進行未被授權的行為。
我們在前一篇文章中:http://ms-net.blogspot.tw/2015/04/aspnet-using-reportviewer-control-to.html 有介紹到使用ReportViewer控制項設計報表的基本入門方式,剛好就有朋友另外問我有關頁首和頁尾的使用方式,因此我在這列出其中有兩項的解決方式:
1. 報表中加頁首和頁尾
2. 讓報表Table的欄位可以出現在每一頁的最上方
請參考以下的做法:
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第八點的弱點,做一些簡單的說明和示範:
8. Insecure Cryptographic Storage:網路應用程式很少正常使用cryptographic functions來保護資料,使得攻擊者有機可乘並冒用其他使用者身份,進行其他犯罪行為,如盜刷信用卡等。
之前有朋友問我,要在asp.net上使用類似報表的方式在網頁上呈現料資料結果,到底是使用Crystal Report 或是自己寫程式使用GridView比較好? 事實上,端看需求而言,假設要做到像Crystal Report 這樣的功能,那麼自己刻UI畫面一定是比要累的,其實在ASP.NET中有一個ReportViewer控制項還蠻好用的。
以下我將ReportViewer控制項有關Print的做法,寫成一個sample code範例,有興趣的朋友可以參考一下範例程式碼檔案,我放在以下網址:
https://www.dropbox.com/s/duonhayz0gz6xd9/PrintWeb.7z?dl=0
另外,我也把簡單的教學開發方式,錄製成步驟放在以下的URL:
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第七點的弱點,做一些簡單的說明和示範,這一個範例是亞當斯的前輩miles所提供的,所使用的方式就是使用c#自己寫HttpRequest去存取指定的網頁,並將利用程式取回的網頁內容HTML進行解譯,並取得一些特殊格式資料:
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第六點的弱點,做一些簡單的說明和示範:
6. Information Leakage and Improper Error Handling:應用程式可能洩漏關於程式的configuration訊息,程式內部的運轉模式,或者透過多種應用問題違犯隱私。攻擊者利用這個程式弱點侵犯隱私,或者更進一步的攻擊。
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第五點的弱點,做一些簡單的說明和示範:
5. Cross Site Request Forgery(CSRF):CSRF攻擊強迫受害者登入的瀏覽器傳輸pre-authenticated request 給有弱點的網路應用程式,接著強迫受害者瀏覽器執行對攻擊者有好處的的行為。
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對第四點的弱點,做一些簡單的說明和示範:
4. Insecure Direct Object Reference:Direct object reference發生的原因是因為開發者暴露了reference to an internal implementation object,像是檔案、檔案夾、或資料庫的record,或是key,來作為URL或是Form的參數。攻擊者可藉由操作這些references擅自進入其他objects中。
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對各種不同的弱點,做一些簡單的說明和示範:
3. Insecure Remote File Include:有弱點的程式碼讓攻擊者可附加惡意程式及資料,甚至導致毀滅性的攻擊,例如整個伺服器被入侵。
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對各種不同的弱點,做一些簡單的說明和示範:
2. Injection Flaws :在網路應用程式,SQL Injection裡很常見。Injection之所以會發生,是因為使用者提供的資料傳輸到一個interpreter,此被當成指令(Command)或是查詢(Query)。攻擊者就能用惡意的資料欺騙interpreter,而達到執行指令或是竄改資料的目的。
OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。
以下針對各種不同的弱點,做一些簡單的說明和示範:
1. Cross Site Scripting(XSS):當應用程式未將使用者提供的資料先審核或進行內容編碼,就直接將資料傳輸到網路瀏覽器,即可能發生XSS問題。XSS能讓攻擊者直接在受害者的網路瀏覽器上執行Script,攻擊者便可以hijack user sessions、或竄改網站內容等。
多年前寫了一篇文章: .NET Call SAP/RFC by Visual Basic & VS2010 ,使用.net code去跟sap連結
因為當初寫完並沒有提供sample code,因此在留言的地方有很多朋友可能都會遇到一些問題,剛好最近在整理NB裡面的資料,因此就把當初所寫的範例程式碼分享出來,希望對需要的朋友有所幫助,當初是使用VS2010開發的,但目前來說應該是沒啥影響!!
以下是sample code download的超連結,分別有c#版和vb版!
https://www.dropbox.com/s/jwe4oeue6gd8x8m/DemoSAP.7z?dl=0
檔案解壓縮密碼是:sap
1.先安裝Web Platform Installer 3.0,Web Platform Installer (WebPI) 針對所有的 Microsoft 免費網路產品提供簡化的下載/安裝體驗,以下為中文版的下載網址:
2.下載並安裝 Windows Azure SDK 1.4 is available for download (下載網址Here)
Windows Azure SDK 1.4 Refresh 主要是解決以下問題的一個穩定版本。
安裝的過程中會檢查其本機系統上的必要條件,若是沒有滿足的必要條件,則會要求自動幫你安裝,按下確定之後開始安裝所有必要條件。
終於看到成功的畫面,小小給他感動一下。
3.接下來要將ASP.NET網站部署到指定的雲端伺服器,那麼必須先建立「Windows Azure Project」專案類型的網站。
4.網站專案設計完成,部署時專案—>右鍵—>選擇「發行」。
5.在第一次針對Windows Azure Project發行網站時,必須先設定 Remote Desktop 所需的主機管理員帳號憑證,否則Web Deploy for all Roles 這個功能就無法啟用,請參考下圖,預設會是灰色無法勾選。
6.
環境:Windows 2008 R2 x64 + ASP.NET 4.0 + Excel 2010
問題:當在ASP.NET中使用Microsoft.Office.Interop.Excel之ApplicationClass來讀取Server上的Excel時,預設會出現以下的錯誤訊息:
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 存取被拒.
我使用try…catch包起來所攔截的Exption如下所示:
造成以上問題主要是執行DCOM的權限部分,因為ASP.NET4.0以上版本在IIS上執行所使用ApplicationPool中的執行身分是ApplicationPoolIdentity,也就是IIS AppPool\ASP.NET v4.0
因此第一個要解決的就是在DCOM中給此帳號足夠的存取權限,作法如下:
到目前為主解決了DCOM權限的問題,但是EXCEL麻煩的問題不單單是這樣,當執行程式時,權限是通過了,但出現了另一個錯誤畫面,如下圖所示:
其實到這邊亞當斯已經很想砸桌子了,因為以上所列的幾種可能原因根本都不存在,當然我很確定我的程式是沒問題的,那麼到底怎麼辦呢? 問了一下Google大神,很多人都使用修改註冊機碼的方式,終於被我找到一種最快、最簡單的解決方式,那就是:
老實說,我也不知道第二個問題的發生主要原因所在,或許是跟產品的一些限制有關,總之,以上兩個大問題都解決之後,就可以順利在ASP.NET中執行存取EXCEL了,YES。
在亞當斯的前一篇文章中:How to using Dynamic Data in GridView-1(如何在GridView上套用DynamicData動態資料機制)有寫到可以使用Dynamic Data 機制來快速呈現資料庫的資料,但是上述連結的那篇文章是用ASP.NET Dynamic Data Linq to WebSite專案來設計,所以預設不用特殊的設定就可以達到符合的功能,然後若是修改使用ASP.NET Dynamic Data Entities WebSite專案,又是如何?
1.建立一個ASP.NET Dynamic Data Entities WebSite專案:
2. 同之前的步驟,新增一個ADO.NET Entity Data Model,然後設定Pubs資料庫為資料來源,並修改Global.asax,這邊值得一提的是因為EDM的模式所產生的DataContext類別會加上命名空間,所以在設定骨幹網站的時候要給完整名稱,如:pubsModel.pubsEntities
DefaultModel.RegisterContext(typeof(pubsModel.pubsEntities), new ContextConfiguration() { ScaffoldAllTables = true });
routes.Add(new DynamicDataRoute("{table}/{action}.aspx"){
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),Model = DefaultModel});
3. 新增一個網頁應用程式,加入GridView並設定資料來源為EntityDataSource,這邊我們挑選employee物件當作資料呈現來源
4. GridView控制項進入編輯欄位視窗,先找到動態欄位
5. 把動態欄位中的關聯欄位Jobs和Publishers加入GridView中
6. 瀏覽網頁,此時會出現錯誤訊息,如下圖所示:
主要是因為使用EntityDataSource設定資料來源的時候,它的一個很重要的屬性: ContextTypeName並不會自動給值,必須由開發者手動設定值。
7. 因此切換到EntityDataSource的屬性視窗,設定ContextTypeName為:pubsModel.pubsEntities
8. 以下是設定完成的EntityDataSource屬性資料
9. 最後重新瀏覽網頁,可以看到動態欄位Jobs和Publishers可以正確地顯示在GridView控制項上,並且擁有關聯網頁可以檢視。
ASP.NET 4 有提供一個開發架構:ASP.NET Dynamic Data,可以快速地根據資料元件動態產生對應的網頁,但是如果想要將ASP.NET Dynamic Data套用到既有自行設計的GridView控制項的話來呈現資料的話,那麼就可以加入動態欄位來呈現。
以下就來示範如何在GridView控制項上套用DynamicData動態資料機制,以產生關聯資料列表:
1. 新增一個ASP.NET Dynamic Data Linq to WebSite專案
2. 加入一個LINQ To SQL Classes,並設定資料來源為Northwind.dbml,挑選幾個要測設的資料表,如:Product…等等,如下圖所示:
3. 修改Global.asax先啟用Dynamic Data骨幹網站,讓此網站可以快速動態產生資料網頁:
DefaultModel.RegisterContext(typeof(NorthwindDataContext),
new ContextConfiguration() { ScaffoldAllTables = true });
routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
Constraints =
new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = DefaultModel
});
4. 瀏覽Default.aspx測試檢視是否可以成功啟用動態網頁
5. 接著要把動態網頁規則套用至自己設計的網頁中,先增一個DynamicGridView.aspx,加入一個GridView控制項,並設定Data Source為LINQ
按下OK,挑選Context Object為:NorthwindDataContext。
6. Table挑選Product(Table<Product>)為主要呈現的資料內容,欄位可以任意選,但是盡量挑選有參考其他資料表欄位關聯性質的,例如:Category…等等,這是為了凸顯動態資料的彈性。
7. 先瀏覽DynamicGridView.aspx,目前跟一般GridView設計時沒什麼兩樣,注意一下SupplierID 和 CategoryID兩個欄位,只有秀ID值。
8. 但是通常使用者想要看的資料並不會是ID值,而是希望看到名稱,甚至更聰明一點希望可以將關聯建立起來,可以直接檢視明細資料。
9. 刪除GridView的SupplierID 和 CategoryID欄位,並加入動態欄位下的Category和Supplier。
10. 再次瀏覽DynamicGridView.aspx就會發現新增的兩個欄位Category 和 Supplier資料都動態產生,甚至有聯結的欄位也自動將關聯加上。
11. 點選Category就可以檢視Categories/ListDetails.aspx的列表資訊。