發表文章

目前顯示的是 10月, 2021的文章

經得起原始碼資安弱點掃描的程式設計習慣培養(九)_Use of Cryptographically Weak PRNG(Pseudo-Random Number Generator)

圖片
  接續前幾篇系列 經得起原始碼資安弱點掃描的程式設計習慣培養(一)_OWASP Top 10(十大網站安全風險)_學習寫更安全程式碼的網站推薦 經得起原始碼資安弱點掃描的程式設計習慣培養(二)_8.Insecure Deserialization :不安全的反序列化漏洞ASP.NET處理方式 經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_1.Injection注入攻擊_SQL Injection)_order by 語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_2.Injection注入攻擊_SQL Injection_In語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header 經得起原始碼資安弱點掃描的程式設計習慣培養(六)_Path Traversal 經得起原始碼資安弱點掃描的程式設計習慣培養(七)_Code Injection 經得起原始碼資安弱點掃描的程式設計習慣培養(八)_Client DOM XSS 在判讀上屬於中風險的漏洞 通常在於應用程式裡面使用的Random亂數功能不夠隨機亂或者隨機範圍很好被預測到因為範圍較小。 風險 可能發生什麼問題 隨機數值通常被用來作為防止惡意使用者猜測如密碼、加密金鑰或session識別元等數值的機制,依照此 隨機數值用途的不同,攻擊者能夠有辦法預測下一個或已經產生過的隨機值,這使得攻擊者可以奪取另 外一位使用者的session,並取代他的身分,或是破解一組加密金鑰 (端看這組偽隨機值的用途)。 原因 如何發生 應用程式使用較弱的演算法來產生偽隨機值,代表決定其他數值的樣本大小相對來說是較小的。因為產 生隨機值所使用的偽隨機值產生器是基於統計學上的均勻分布所設計的,具有近似確定性。所以在收集 到數個產生出來的數值 (建立幾個獨立session然後收集session辨識碼) 後,攻擊者就有可能計算出其他的session辨識值。 更準確的說,如果這組偽隨機值被用做任何安全性使用,如密碼、金鑰、或是隱密辨識值,攻擊者就可以 預測下一個或已經產生的數值。 如何避...

Angular使用筆記6_Data Binding

圖片
 Angular當中提供的Data Binding 主要分為 內嵌繫結 Interpolation {{statement}} statement : 通常是來自component的屬性 使用 兩個大括號的語法 就稱為內嵌繫結,屬於單向的繫結,只有將元件中 component 的資料傳送到網頁元素 template 上顯示。 屬性繫結 Property Binding [src]="statement" [attr.data-xxx]="statement" (for data-attribute )   屬性 使用中括號包住 ,並等於一個陳述式,使用引號包住,EX. [屬性]='陳述內容'。 雖然 property 與 attribute 的中文都翻譯成「屬性」 但就 HTML5 中,attribute 是可自定義的,例如: data-setAttributeName,可是 無法作為屬性繫結,在html中屬性是以 atrribute 稱呼,是指標籤的屬性。 例如: <img title ="pic title" src ="https://url.joor.net/ckY" alt ="pic" /> src 、 title 、 alt 為標籤屬性,另外還有很常見的 href、class… 在此是針對JavaScript DOM下的 property 事件繫結 Event Binding HTML中所有的event都能轉為Angular的event 雙向繫結 Two-way Binding 語法 內嵌繫結 Interpolation 屬性繫結 Property Binding 事件繫結 Event Binding

EC Council CASE.NET_Common Application-Level Attacks_lab4.Insecure Direct Object Reference_資料庫流水號直接遞增1或者識別號連續性的危險性

圖片
 攻擊者利用Web應用程式本身的“物件存取功能"任意讀取不該檢視的檔案" 比方在網頁網址欄位的一些流水號id 物件可能包含像是網頁、圖片、檔案等等 ( Path Traversal 是其中一種) 一家XXX銀行網站管理系統 用戶登入 User Name: tester1 Password: test1 查看一下特定某筆交易款項資料 帳號ID:1144229904  Step 2: Click Get Account Details button. Account details will be displayed. 這邊還可以前後遞增減1 看別人的交易詳細資料呢 試試看換別人的帳號ID成 1144229905 挖別人的資訊也可以一覽無遺 程式部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 using System ; using System.Collections.Generic ; using System.Configuration ; using System.Data ; using System.Data.SqlClient ; using System.Linq ; using System.Web ; using System.Web.UI ; using System.Web.UI.WebControls ; namespace Labs.Lab4 { public partial class Transaction : System.Web.UI.Page { protected void Page_Load ( object sender, EventArgs e) { } protected void BtnGetTransactions_Click ( object sender...

EC Council CASE.NET_Common Application-Level Attacks_lab2.XSS攻擊與防範

圖片
  可能在導覽至contact輸入欄位後下js語法 進行一些資訊竊取等等 <script>alert('XSS');</script> 含有漏洞的程式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using System ; using System.Collections.Generic ; using System.Linq ; using System.Web ; using System.Web.UI ; using System.Web.UI.WebControls ; namespace Labs.M1Lab2 { public partial class Index : System.Web.UI.Page { protected void Page_Load ( object sender, EventArgs e) { if (Request.QueryString[ "Username" ] != null ) Lblgreeting.Text = "Thank you " + Request.QueryString[ "Username" ].ToString() + " for Contacting Us." ; } protected void Button1_Click ( object sender, EventArgs e) { Response.Redirect( "Index.aspx?Username=" + txtName.Text); } } } 修正後 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using System ; ...

EC Council CASE.NET_Common Application-Level Attacks_lab1.SQL 注入攻擊跟防範

圖片
  一個登入畫面程式 用 Username:  tester1 Password:  test1 成功登入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 using System ; using System.Collections.Generic ; using System.Configuration ; using System.Data ; using System.Data.SqlClient ; using System.Linq ; using System.Web ; using System.Web.UI ; using System.Web.UI.WebControls ; namespace Labs.Module1.Lab1 { public partial class login : System.Web.UI.Page { protected void Page_Load ( object sender, EventArgs e) { } protected void Btn_login_Click ( object sender, EventArgs e) { string strcon = ConfigurationManager.ConnectionStrings[ "accounts" ].ConnectionString; SqlConnection con = new SqlConnection(strcon); SqlCommand cmd = new SqlCommand ( "SELECT [firstname],[lastname],[mobile],[email] FROM [accou...

經得起原始碼資安弱點掃描的程式設計習慣培養(四)_2.Injection注入攻擊_SQL Injection_In語句正確參數化套入

圖片
 接續前幾篇系列 經得起原始碼資安弱點掃描的程式設計習慣培養(一)_OWASP Top 10(十大網站安全風險)_學習寫更安全程式碼的網站推薦 經得起原始碼資安弱點掃描的程式設計習慣培養(二)_8.Insecure Deserialization :不安全的反序列化漏洞ASP.NET處理方式 經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_1.Injection注入攻擊_SQL Injection)_order by 語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header 經得起原始碼資安弱點掃描的程式設計習慣培養(六)_Path Traversal 經得起原始碼資安弱點掃描的程式設計習慣培養(七)_Code Injection 經得起原始碼資安弱點掃描的程式設計習慣培養(八)_Client DOM XSS 之前已經有修正過SQL Injection的經驗了是在針對order by情境 而這次遇到舊專案是在於In 一些參數的動態組字串的問題引發白箱弱掃 雖然前人已經有改用參數化方式但仍然會引發Injection風險 首先前人寫一段回傳DataSet給外面資料DataBind的dal函數 在外部呼叫時候 他傳入參數的準備處理比較容易有風險 用字串橫線分割 但傳入到function仍需要轉回成陣列或集合的型別 也會有多此一舉 所以其實在function設計上傳入參數一開始就指定傳入類似List之類的集合型別就好了 再針對In裡面要傳進的參數先prepare好一個condition string 如此可降低一些被弱掃認為是有風險的寫法 少點動態組字串問題

經得起原始碼資安弱點掃描的程式設計習慣培養(八)_Client DOM XSS

圖片
  接續前幾篇系列 經得起原始碼資安弱點掃描的程式設計習慣培養(一)_OWASP Top 10(十大網站安全風險)_學習寫更安全程式碼的網站推薦 經得起原始碼資安弱點掃描的程式設計習慣培養(二)_8.Insecure Deserialization :不安全的反序列化漏洞ASP.NET處理方式 經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_1.Injection注入攻擊_SQL Injection)_order by 語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header 經得起原始碼資安弱點掃描的程式設計習慣培養(六)_Path Traversal 經得起原始碼資安弱點掃描的程式設計習慣培養(七)_Code Injection 近期維護到一個10幾年前的一個網站 在修正CheckMarx風險時候踏到一個 問題在於引入的這一個嵌入 Flash套件swfobject.js 由於專案本身其實沒有再使用了 所以解法就是移除掉該swf套件跟引入的部分 Ref: 瀏覽器現在已經不支援 flash,要怎麼播放 SWF 檔案? https://steachs.com/archives/55733 網頁設計師一定要會的Swfobject.js 崁入Flash .SWF https://ucamc.com/articles/107-swfobject-js-flash swfobject - 網頁輕鬆嵌入 Flash https://blog.amowu.com/swfobject-flash/ 如何安全地嵌入任何Flash文件(SWF)? (How to safely embed any flash file (swf)?) https://zh-tw.coderbridge.com/discussions/b83ba1b6041e4593af2061dc32e7e323

GitLab上git日常指令操作

圖片
  由於時常忘記所以還是做一下這塊的筆記 之前的筆記文章是從自己建立repository切入 淺談版本控制示意圖原理_作法_悲觀鎖定VS樂觀鎖定VS分散式版本_傳統Delta儲存.vs.DAG儲存 https://coolmandiary.blogspot.com/2017/05/vs.html 電腦環境上配置 git  config   --global   user.name  "你的名字" git  config  --global  user.email  "你的電子郵件" 列出目前電腦上git配置設定參數 git config --list  針對user name印出 git config user.name 針對email印出 git config user.email 通常起手式 要馬自己建立repository 要馬Clone(複製)別人的 Repository 這次先以比較常會碰到的 clone他人repository的情境來看 GitLab上分支 首先要針對自己的branch clone下來的操作 git clone --branch <branchname> <remote-repo-url> 或 git clone -b <branchname> <remote-repo-url> 假如有四個分支 git clone --branch {分支名稱1} https://XXXXXXXX.git git clone --branch {分支名稱2} https://XXXXXXXX.git git clone --branch {分支名稱3} https://XXXXXXXX.git git clone --branch {分支名稱4} https://XXXXXXXX.git 比方我要取我的分支下來做後續程式開發 git clone --branch KuanYu https://XXXXXXXX.git 接下來的操作都是當前已經切換到在含有.git目錄下的cmd或者linux環境目錄下的操作 status 指令 查看(初始確認) 通常都會確認目前checkout或者clone下...

Angular使用筆記5_組件(component)和模組(module)

圖片
  元件、組件(component):每一頁都屬於component(至少一個) 所以若一個網站有200頁就至少會有200個component 每一頁可能又會拆幾個子component( Header component , Menu component) 有點類似封裝成一個自訂客製的tag 一個component會有三個組成元素分別是 class (也就是.ts檔) template(也就是.html檔) metadata(中繼資料)->decorator 通常放在.ts檔class上面有點類似data annotation用來描述該class(或property,method)的一些特性 也時常放在一個property或者一個method上面去裝飾 以@NgModule這個decorator來講 當中的metadata又包含 declarations 代表在此模組中要控制的組件有哪些這邊用陣列方式來做設置。 providers 代表一些service的引用添加 imports 代表Module的引入(比方像最開始需要依賴的就是BrowserModule,AppRoutingModule) 模組,模块(module):用來管理component的一個封裝的單位,通常沒有code只會有個宣告 (有點類似dll或namespace封裝很多class進去) 一般都會先建立module再去註冊各個component,module用來封裝angulat的組件。 至少會有一個最根本的Base Module就是 AppModule Type of the NgModule metadata. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73...