2018/05/10

SampleCMS 參數過濾元件說明

在 SampleCMS 系統中不管是前台或後台,從 GET (Request.QueryString) 與 POST (Request.Form) 傳送進系統的參數值皆會經過參數過濾機制的檢查,當系統發現參數值有疑似 XSS (Cross-Site Script) 或 SQL Injection 的指令關鍵字就會立刻終止開啟網頁的要求。

參數過濾機制使用參數過濾元件群來檢查各式各樣的規則,
以下說明參數過濾元件的各項功能以及使用方式,

2018/05/08

SampleCMS 附件管理共用元件說明:附件下載共用元件 AttDownloadCommon 使用方式

在 附件管理功能概述 提到了 SampleCMS 附件管理的四項主要功能「儲存(更新)附件資訊與檔案、檢視附件資訊、下載附件檔案、刪除附件檔案」。

上一篇 附件管理共用元件 AttachFileManagerLogic 使用方式 說明附件管理共用元件 AttachFileManagerLogic 在上述功能中「儲存(更新)附件資訊與檔案、檢視附件資訊、刪除附件檔案」負責的工作。

這一篇繼續說明附件下載共用元件 AttDownloadCommon 在「下載附件檔案」負責的工作。

SampleCMS 附件管理共用元件說明:附件管理共用元件 AttachFileManagerLogic 使用方式

上一篇 附件管理功能概述 提到了 SampleCMS 附件管理的四項主要功能「儲存(更新)附件資訊與檔案、檢視附件資訊、下載附件檔案、刪除附件檔案」。

這一篇繼續說明附件管理共用元件 AttachFileManagerLogic 在上述功能中「儲存(更新)附件資訊與檔案、檢視附件資訊、刪除附件檔案」負責的工作。

2018/05/07

SampleCMS 附件管理共用元件說明:附件管理功能概述

附件管理主要由「儲存(更新)附件資訊與檔案、檢視附件資訊、下載附件檔案、刪除附件檔案」這四項功能組成。而 SampleCMS 將檔案資訊與實體檔案分別存放在資料庫與磁碟,在實作程式上因此變得比較繁瑣以及需要較為謹慎,需確保檔案資訊與實體檔案皆儲存完成才算成功。

另一方面,其他的附件管理,例如:照片管理,或是在其他專案曾經製作的廣告橫幅管理商品附件管理。它們在「儲存(更新)附件資訊與檔案、檢視附件資訊、下載附件檔案、刪除附件檔案」這四項功能中的程式流程與這個附件管理是相同的,差別在於可能需要檢查不同的檔案類型、儲存在磁碟的檔名採用不同格式、儲存在磁碟的不同目錄、甚至儲存在資料庫的不同資料表。

而這樣子的差別,不同的類型有著相同的行為但是行為裡的細項動作各自不同,蠻適合使用物件導向來設計共用相同的行為。因此在 SampleCMS 之中,製作了附件管理共用元件 AttachFileManagerLogic 與檔案下載功能的共用元件 AttDownloadCommon。

下列先以循序圖概略描述「儲存(更新)附件資訊與檔案、檢視附件資訊、下載附件檔案、刪除附件檔案」這四項功能,

2018/05/04

[備忘錄分享] XSS (2009 年) 測試記錄

在 2009 年,我第一次接觸弱點掃描,看著掃描報告中的 XSS (Cross-Site Script) 跨網站指令碼漏洞描述,很好奇什麼樣的寫法會用來做為 XSS ,同時也想知道我該怎麼防堵 XSS 進而通過弱點掃描。

當時我找到一個格主是 OpenBlue 的部落格,裡面寫了很多 XSS 相關的知識,我覺得是個寶庫(可惜現在這個部落格已經關了)。我在那個部落格中找到一篇叫做「淺析XSS(Cross Site Script)漏洞原理」的文章,照著文章裡的描述開始了我的摸索與測試。

今日再次搜尋「淺析XSS(Cross Site Script)漏洞原理」才知道原文出處在內地,還好這篇文章還看得到,請看 http://safe.it168.com/n/2007-07-04/20070704004201_all.shtml

以下為當時我所記錄的內容,

[備忘錄分享] 簡介曾經做過的 Smart Client 架構

大約是 2006 年,那時的我從使用 C++ 寫遊戲程式轉換到使用 .net 寫視窗與網頁程式。
當時的工作是我從資策會學完 .net 之後的下一份工作。工作的內容是和公司的前輩一起製作一個電視購物的 ERP (Enterprise Resource Planning) 系統,主要的子系統如下,
  1. 提供給電話客服人員使用的訂單系統。
  2. 提供給物流人員使用的進銷存系統。
當時希望採用微軟在 2004 年提出的 Smart Client 架構,這個架構簡單的來說就是要取 Window Form 程式與 ASP.NET 網頁程式的優點並且捨棄它們的缺點。

傳統的 Window Form 程式,定位為 Rich Client (又叫 Fat Client, Thick Client),
相較於當時的網頁程式,Window Form 能夠使用更豐富的 UI 元件提供給使用者互動,但是缺點就是不易更新使用者手上的程式,每次的程式更新都得打包安裝檔並且讓每個使用者下載與安裝,不像網頁程式用瀏覽器只要重新打開原本的連結,網頁內容隨時都是最新版本。這個問題在使用者越多時會越令人頭痛。

網頁程式,定位為 Thin Client,
不像現在 2018 年,當時的網頁程式連 ajax 都還沒流行,網頁程式能提供給使用者的 UI 都很陽春,和視窗程式有很大的落差。不過其優點就像上一條提到的,發佈更新很方便,只要重新打開原本的連結,網頁內容隨時都是最新版本。

而 Smart Client 就是要取上述兩種的優點,要有 Window Form 程式的豐富 UI ,而且發佈更新像網頁程式一樣方便。

以下簡介當時製作的 Smart Client 系統架構,

2018/05/03

SampleCMS 前台網頁預覽功能驗證方式說明

SampleCMS 後台管理功能「網站架構管理」提供預覽尚未開放的前台網頁內容功能。
使用的方式如同操作手冊「3.1.使用情境:檢視指定網頁資料」提到的,
"若指定的網頁資料狀態是隱藏的或者不在上架期間,則檢視鈕會變更為預覽鈕,此時點選指定語系的預覽鈕,系統將以預覽模式開啟未開放的前台網頁,並且在前台網頁中出現「您正使用預覽模式檢視本頁」的提醒訊息

* 基於保密的原則,每一次用來預覽指定的前台網頁網址有時效限制,目前為10分鐘,當預覽用的網址產生超過10分鐘且繼續被用來開啟網頁時將導向錯誤頁,此時若還需要預覽指定的前台網頁,請回到網頁管理畫面點選預覽鈕重新產生。"

以下說明前台網頁預覽功能驗證方式,

SampleCMS 網頁共用元件說明:前台相關元件分工說明

在說明完 後台相關元件分工說明 之後,繼續說明前台相關元件。
接下來以通用的多功能網頁程式 Article.aspx 為例說明前台相關元件以及各項的分工,包含 網頁共用元件說明:簡介 提到的前台網頁共用元件 FrontendPageCommon。

2018/05/01

SampleCMS 網頁共用元件說明:後台相關元件分工說明

製作網頁程式的時候,除了至今為止談過的資料層元件帳號與權限系統元件網頁內容發佈系統元件網頁共用元件這些屬於資料層與邏輯層的共用元件,展示層也有需要共用的部分。以後台網頁為例,每一個清單頁都有下列元素「 Logo 圖、登入資訊、右上角使用者選單、左側系統功能選單」。

使用 ASP.NET Web Forms 製作網頁,常用來製作展示層共用元件的方式就是使用 MasterPage 與 UserControl。SampleCMS 也不例外,接下來以帳號清單頁 Account-List.aspx 為例說明後台相關元件以及各項的分工,包含前一篇 網頁共用元件說明:簡介 提到的後台網頁共用元件 BackendPageCommon(在帳號清單頁使用的是其衍生類別 AccountCommonOfBackend)。