顯示具有 ASP.NET篇 標籤的文章。 顯示所有文章
顯示具有 ASP.NET篇 標籤的文章。 顯示所有文章

2015年5月20日 星期三

OWASP TOP 10 十大網路應用系統安全弱點 Demo 10

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第十點的弱點,做一些簡單的說明和示範:

10. Failure to Restrict URL Access:應用程式敏感地區是被保護的Links或是URLs,而這些是不會提供給未被授權的使用者。這也容易讓攻擊者利用這項弱點進入,並進行未被授權的行為。

2015年4月10日 星期五

ASP.NET ReportViewer Repeat Column Headers

我們在前一篇文章中:http://ms-net.blogspot.tw/2015/04/aspnet-using-reportviewer-control-to.html 有介紹到使用ReportViewer控制項設計報表的基本入門方式,剛好就有朋友另外問我有關頁首和頁尾的使用方式,因此我在這列出其中有兩項的解決方式:
1. 報表中加頁首和頁尾
2. 讓報表Table的欄位可以出現在每一頁的最上方

請參考以下的做法:

2015年4月8日 星期三

OWASP TOP 10 十大網路應用系統安全弱點 Demo 8

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第八點的弱點,做一些簡單的說明和示範:

8. Insecure Cryptographic Storage:網路應用程式很少正常使用cryptographic functions來保護資料,使得攻擊者有機可乘並冒用其他使用者身份,進行其他犯罪行為,如盜刷信用卡等。

2015年4月1日 星期三

ASP.NET Using ReportViewer Control to Design Report(使用ASP.NET中的ReportViewer控制項設計報表)

之前有朋友問我,要在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:

https://www.youtube.com/watch?v=eMy0IhY_SNM

2015年3月31日 星期二

OWASP TOP 10 十大網路應用系統安全弱點 Demo 7

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第七點的弱點,做一些簡單的說明和示範,這一個範例是亞當斯的前輩miles所提供的,所使用的方式就是使用c#自己寫HttpRequest去存取指定的網頁,並將利用程式取回的網頁內容HTML進行解譯,並取得一些特殊格式資料:

2015年3月25日 星期三

OWASP TOP 10 十大網路應用系統安全弱點 Demo 6

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第六點的弱點,做一些簡單的說明和示範:

6. Information Leakage and Improper Error Handling:應用程式可能洩漏關於程式的configuration訊息,程式內部的運轉模式,或者透過多種應用問題違犯隱私。攻擊者利用這個程式弱點侵犯隱私,或者更進一步的攻擊。

2015年3月20日 星期五

OWASP TOP 10 十大網路應用系統安全弱點 Demo 5

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第五點的弱點,做一些簡單的說明和示範:

5. Cross Site Request Forgery(CSRF):CSRF攻擊強迫受害者登入的瀏覽器傳輸pre-authenticated request 給有弱點的網路應用程式,接著強迫受害者瀏覽器執行對攻擊者有好處的的行為。

2015年2月27日 星期五

OWASP TOP 10 十大網路應用系統安全弱點 Demo 4

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對第四點的弱點,做一些簡單的說明和示範:

4. Insecure Direct Object Reference:Direct object reference發生的原因是因為開發者暴露了reference to an internal implementation object,像是檔案、檔案夾、或資料庫的record,或是key,來作為URL或是Form的參數。攻擊者可藉由操作這些references擅自進入其他objects中。

2015年2月20日 星期五

OWASP TOP 10 十大網路應用系統安全弱點 Demo 3

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對各種不同的弱點,做一些簡單的說明和示範:

3. Insecure Remote File Include:有弱點的程式碼讓攻擊者可附加惡意程式及資料,甚至導致毀滅性的攻擊,例如整個伺服器被入侵。

2015年2月13日 星期五

OWASP TOP 10 十大網路應用系統安全弱點 Demo 2

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對各種不同的弱點,做一些簡單的說明和示範:

2. Injection Flaws :在網路應用程式,SQL Injection裡很常見。Injection之所以會發生,是因為使用者提供的資料傳輸到一個interpreter,此被當成指令(Command)或是查詢(Query)。攻擊者就能用惡意的資料欺騙interpreter,而達到執行指令或是竄改資料的目的。

2015年2月6日 星期五

OWASP TOP 10 十大網路應用系統安全弱點 Demo 1

OWASP Top 10 主要目的,是將最常見的網路應用系統安全弱點列出,並提供基本的方法保護防止這些弱點,是軟體開發安全計劃最好的開始。

以下針對各種不同的弱點,做一些簡單的說明和示範:

1. Cross Site Scripting(XSS):當應用程式未將使用者提供的資料先審核或進行內容編碼,就直接將資料傳輸到網路瀏覽器,即可能發生XSS問題。XSS能讓攻擊者直接在受害者的網路瀏覽器上執行Script,攻擊者便可以hijack user sessions、或竄改網站內容等。

2015年1月23日 星期五

.NET Call SAP/RFC by Visual Basic & VS.NET(sample code)

多年前寫了一篇文章: .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

2012年12月8日 星期六

使用Visual Studio 2010 Windows Azure SDK 部署ASP.NET至Windows Azure

 

1.先安裝Web Platform Installer 3.0,Web Platform Installer (WebPI) 針對所有的 Microsoft 免費網路產品提供簡化的下載/安裝體驗,以下為中文版的下載網址:

http://www.microsoft.com/downloads/details.aspx?familyid=32B0DFE5-F139-4E1C-B412-3DA39F50BBF9&displaylang=zh-tw

image

2.下載並安裝 Windows Azure SDK 1.4 is available for download (下載網址Here)

Windows Azure SDK 1.4 Refresh 主要是解決以下問題的一個穩定版本。

  • 解決 web.config 檔案設為唯獨時會造成整體 IIS 失敗的問題。
  • 解決封裝時會造成整體 IIS 封裝大小增加一倍的問題。
  • 解決診斷存放區滿溢時會造成整體 IIS Web 角色回收的問題。
  • 解決會造成診斷無法將 IIS 記錄傳輸到 Windows Azure 儲存體的 IIS 記錄檔權限問題。
  • 解決 csupload 無法在 x86 平台上執行的問題。
  • 現在更容易診斷 web.config 中的使用者錯誤。
  • 增強產品功能,提高 Windows Azure 角色的遠端桌面穩定性和可靠性。

image

安裝的過程中會檢查其本機系統上的必要條件,若是沒有滿足的必要條件,則會要求自動幫你安裝,按下確定之後開始安裝所有必要條件。

image

終於看到成功的畫面,小小給他感動一下。

image

3.接下來要將ASP.NET網站部署到指定的雲端伺服器,那麼必須先建立「Windows Azure Project」專案類型的網站。

image

4.網站專案設計完成,部署時專案—>右鍵—>選擇「發行」。

image

5.在第一次針對Windows Azure Project發行網站時,必須先設定 Remote Desktop 所需的主機管理員帳號憑證,否則Web Deploy for all Roles 這個功能就無法啟用,請參考下圖,預設會是灰色無法勾選。

image

6.

image

image

image

 

image

 

image

 

image

 

image

image

image

image

 

image

 

image

 

image

2012年11月14日 星期三

The Solution of using ASP.NET Create Excel in Windows 2008 x64 with 80070005(在x64位元的系統上執行ASP.NET產生Excel遇到80070005 存取被拒解決方式)

環境: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如下所示:

image

造成以上問題主要是執行DCOM的權限部分,因為ASP.NET4.0以上版本在IIS上執行所使用ApplicationPool中的執行身分是ApplicationPoolIdentity,也就是IIS AppPool\ASP.NET v4.0

image

因此第一個要解決的就是在DCOM中給此帳號足夠的存取權限,作法如下:

  1. 在SERVER上先執行以下指令:mmc comexp.msc /32,此指令主要是開啟32位元的元件服務設定。
  2. 在元件服務—>電腦—>我的電腦—>DCOM設定中找到Microsoft Excel Application,按右鍵選擇內容
    image
  3. 點選安全性頁籤,啟動和啟用權限以及存取權限預設都沒有設定給ASP.NET v4.0
    image
  4. 所以我們要進行自訂設定
    image
  5. 在啟動和啟用權限以及存取權限中將IIS AppPool\ASP.NET v4.0加入
    image
  6. 當按下檢查名稱後,會自動尋找對應,按下確定
    image
  7. ASP.NET v4.0權限為允許本機啟動以及本機啟用
    另外假設往後也會使用到NETWORK SERVICE帳號的話,也可以順道加入,避免往後其他ApplicationPool設定NETWORK SERVICE時,還要近來在設定一次
    imageimage

到目前為主解決了DCOM權限的問題,但是EXCEL麻煩的問題不單單是這樣,當執行程式時,權限是通過了,但出現了另一個錯誤畫面,如下圖所示:

image

其實到這邊亞當斯已經很想砸桌子了,因為以上所列的幾種可能原因根本都不存在,當然我很確定我的程式是沒問題的,那麼到底怎麼辦呢? 問了一下Google大神,很多人都使用修改註冊機碼的方式,終於被我找到一種最快、最簡單的解決方式,那就是:

  1. 如果是Windows 2008 Server x64 的話,那麼就在下列路徑中C:\Windows\SysWOW64\config\systemprofile新增一個資料夾,名稱命名為:Desktop,即可。
    image
    資料建立完成之後,還要進行權限設定,如下圖所示:
    image
  2. 假設Windows 2008 Server x86的話,路徑為 C:\Windows\System32\config\systemprofile\Desktop

老實說,我也不知道第二個問題的發生主要原因所在,或許是跟產品的一些限制有關,總之,以上兩個大問題都解決之後,就可以順利在ASP.NET中執行存取EXCEL了,YES。

2011年7月17日 星期日

How to using Dynamic Data in GridView-2(如何在GridView上套用DynamicData動態資料機制)

在亞當斯的前一篇文章中: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專案:

clip_image002

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物件當作資料呈現來源

clip_image003

4. GridView控制項進入編輯欄位視窗,先找到動態欄位

clip_image004

5. 把動態欄位中的關聯欄位Jobs和Publishers加入GridView中

clip_image005

6. 瀏覽網頁,此時會出現錯誤訊息,如下圖所示:

clip_image006

主要是因為使用EntityDataSource設定資料來源的時候,它的一個很重要的屬性: ContextTypeName並不會自動給值,必須由開發者手動設定值。

7. 因此切換到EntityDataSource的屬性視窗,設定ContextTypeName為:pubsModel.pubsEntities

clip_image007

8. 以下是設定完成的EntityDataSource屬性資料

clip_image008

9. 最後重新瀏覽網頁,可以看到動態欄位Jobs和Publishers可以正確地顯示在GridView控制項上,並且擁有關聯網頁可以檢視。

clip_image009

How to using Dynamic Data in GridView-1(如何在GridView上套用DynamicData動態資料機制)

ASP.NET 4 有提供一個開發架構:ASP.NET Dynamic Data,可以快速地根據資料元件動態產生對應的網頁,但是如果想要將ASP.NET Dynamic Data套用到既有自行設計的GridView控制項的話來呈現資料的話,那麼就可以加入動態欄位來呈現。

以下就來示範如何在GridView控制項上套用DynamicData動態資料機制,以產生關聯資料列表:

1. 新增一個ASP.NET Dynamic Data Linq to WebSite專案

clip_image001

2. 加入一個LINQ To SQL Classes,並設定資料來源為Northwind.dbml,挑選幾個要測設的資料表,如:Product…等等,如下圖所示:

clip_image003

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測試檢視是否可以成功啟用動態網頁

clip_image004

5. 接著要把動態網頁規則套用至自己設計的網頁中,先增一個DynamicGridView.aspx,加入一個GridView控制項,並設定Data Source為LINQ

clip_image005

按下OK,挑選Context Object為:NorthwindDataContext。

clip_image006

6. Table挑選Product(Table<Product>)為主要呈現的資料內容,欄位可以任意選,但是盡量挑選有參考其他資料表欄位關聯性質的,例如:Category…等等,這是為了凸顯動態資料的彈性。

clip_image007

7. 先瀏覽DynamicGridView.aspx,目前跟一般GridView設計時沒什麼兩樣,注意一下SupplierID 和 CategoryID兩個欄位,只有秀ID值。

clip_image008

8. 但是通常使用者想要看的資料並不會是ID值,而是希望看到名稱,甚至更聰明一點希望可以將關聯建立起來,可以直接檢視明細資料。

9. 刪除GridView的SupplierID 和 CategoryID欄位,並加入動態欄位下的Category和Supplier。

clip_image009

10. 再次瀏覽DynamicGridView.aspx就會發現新增的兩個欄位Category 和 Supplier資料都動態產生,甚至有聯結的欄位也自動將關聯加上。

clip_image011

11. 點選Category就可以檢視Categories/ListDetails.aspx的列表資訊。

clip_image012