駭客概念:SQL Injection | 資料庫分區(Partitioning) 和 分片(Sharding)

閱讀時間約 7 分鐘

本篇為參考各路大神資料的學習筆記,若有錯誤請不吝指正。

以下比喻參考自網站安全🔒 一次看懂 SQL Injection 的攻擊原理 — 「雍正繼位之謎」

SQL Injection(SQL 注入)是一種常見的駭客攻擊技術,目的是透過竄改應用程式發出的 SQL 語法,非法存取或操控資料庫。用傳說中雍正改「傳位十四子」為「傳位四子」的例子來比喻,非常貼切:駭客利用程式的弱點,插入額外的指令,改變原本的意圖。

以下是對 SQL Injection 的完整解釋及舉例:


什麼是 SQL Injection?

  • 概念:
    • 駭客透過輸入惡意的 SQL 語法,插入應用程式與資料庫之間的 SQL 查詢,讓資料庫執行不應執行的指令。
  • 工作原理:
    • 應用程式接收使用者輸入,將其嵌入到 SQL 語句中,卻未對輸入進行嚴格檢查或轉義,導致惡意輸入成為 SQL 的一部分。

SQL Injection 的基本範例

原始情境:

假設有一個登入系統,透過 SQL 查詢驗證用戶名和密碼:

SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password';

正常輸入:

  • 用戶輸入:username = Alice, password = 1234
  • 組合後的 SQL 查詢:
    SELECT * FROM users WHERE username = 'Alice' AND password = '1234';

惡意輸入(SQL Injection):

  • 駭客在登入介面的 username 輸入'' OR '1'='1'。因為 OR 是 SQL的語法之一,所以SQL 就會把 輸入的 OR 視為語法之一。 username = ' OR '1'='1password = ''
  • 組合後的 SQL 查詢:
    SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
    • 解釋:'' OR '1'='1' 代表 OR 兩邊只有有一邊符合情況,登入系統 '1'='1' 是一個永遠為真的條件,這使得 SQL 查詢無視密碼驗證,返回整個 users 表的內容,駭客成功繞過驗證。

SQL Injection 的其他例子

竊取資料

目標: 查詢整個 users 表的所有內容。

  • 駭客輸入:username = ' OR 1=1; --password = ''
  • 組合後的 SQL:
    SELECT * FROM users WHERE username = '' OR 1=1; -- AND password = '';
    • -- 是 SQL 中的註解符號,後面的部分會被忽略。
    • 結果: 駭客獲得 users 表的全部資料。

如何防止 SQL Injection?

防止 SQL Injection 的核心是確保所有使用者輸入都被正確處理,防止惡意語句影響原本的 SQL 查詢。

1. 使用參數化查詢(Parameterized Query)

  • 解法: 將 SQL 語句與使用者輸入分離,確保輸入只會被視為值,而非語法的一部分。
  • 範例(以 Python 和 MySQL 為例):
    cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))

2. 使用 ORM(物件關聯映射)框架

** 此項為 ChatGPT 回復,待查資料

  • 解法: 使用像 Django ORM、SQLAlchemy 等框架,它們會自動處理 SQL Injection 防護。
  • 範例:
    user = User.objects.filter(username="Alice", password="1234").first()

3. 輸入驗證

  • 解法: 對使用者輸入進行格式檢查與過濾,確保不接受惡意內容。
    • 限制輸入長度。
    • 檢查是否符合預期格式(如僅接受字母、數字)。

4. 限制資料庫權限

  • 解法: 確保應用程式使用的資料庫帳號僅具有最低權限,例如:
    • 禁止應用程式帳號執行 DROP TABLE 或其他管理指令。
    • 僅允許執行讀取和寫入操作。

總結

  • SQL Injection 的本質: 透過插入惡意 SQL 指令,篡改資料庫操作。
  • 危害: 可以竊取數據、繞過驗證、刪除資料,甚至控制伺服器。
  • 防護方法: 使用參數化查詢、ORM 框架、輸入驗證,並限制資料庫權限。

用「雍正改傳位」的例子來說,防止 SQL Injection 就是要確保:

  • 任何傳遞的「多餘筆畫」都無法改變原本的「傳位語句」。
  • 透過嚴格的語法與格式檢查來保證內容的正確性。

資料庫分區(Partitioning)分片(Sharding)

資料庫分區(Partitioning)分片(Sharding) 是常用的技術,讓資料庫更好管理,其中 Partitioning 又細分成垂直分區(Vertical Partitioning)和水平分區(Horizontal Partitioning)。透過這些做法將一個資料表分成多個部分。

raw-image

Sharding(資料分片)

定義:

資料分片是將資料表的資料分散到不同的伺服器上,每個伺服器存放不同的分片。這是一種資料庫水平分區的擴展形式,用於處理超大規模資料。

特點:不同於分區,分片是跨多個伺服器進行的,而分區通常在同一伺服器內。

優點:

  • 無需擴充單個伺服器,直接新增伺服器即可擴展(橫向擴展)。
  • 適合處理大量數據,像是社交媒體或電商網站,如果資料爆掉只要新增伺服器即可。

缺點:資料一致性和跨分片查詢的難度較高,如果要更新資料要跨伺服器更新。

比喻:

  • 如果有一本超厚的百科全書,分區是將它分冊,而分片則是將不同的冊子分送到不同的圖書館。

範例:

假設有一個用戶表 Users,分片後:

  1. 伺服器 A 存放 ID 1~10,000 的用戶。
  2. 伺服器 B 存放 ID 10,001~20,000 的用戶。

總結

  1. 垂直分區(Vertical Partitioning):
    • 按欄位拆分表,適合優化查詢結構。
  2. 水平分區(Horizontal Partitioning):
    • 按行拆分表,適合減少單表數據量,提高性能。
  3. 分片(Sharding):
    • 資料跨伺服器分布,適合處理大數據。

留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本文介紹了資料庫索引的基本原理、類型以及其在資料查詢中的重要性。索引類似於書的目錄,不僅可以提高查詢效率,還有助於組織資料。文章詳細說明瞭主索引、密集索引、稀疏索引、叢索引和非叢索引的定義與特點,並提供了實際的比喻和例子。透過深入瞭解索引的運作,讀者可以更好地設計和優化資料庫,並提升查詢效能。
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
本文將逐步拆解如何將 ER 圖轉換為 Schema,深入瞭解 ER 圖的意義以及其對於資料庫設計的重要性。透過影片內容,我們可以學習如何清晰地描述實體關係,並將複雜的資料結構轉化為易於管理的 Schema 形式。無論是初學者或有經驗的資料庫管理者,都能從中獲得實用的技巧和知識。
本文探討資料庫設計的基本概念,區別了 Flat-file 和 Database,並詳細介紹了資料庫設計的流程,包括需求分析、ER 圖概念設計、邏輯資料模型和物理模型的轉換。還介紹了關聯式資料庫的基本組成、五大鍵以及各種限制,希望對自學者理解資料庫設計有所幫助。
前一篇提到B樹和B+樹,這篇介紹AVL 樹和經典的紅黑樹。 在開始之前,可以看個輕鬆的影片,對於紅黑樹在真實商業案例的應用更有印象 學習資料結構、演算法在工作上真的有用嗎? 實際工作經歷不藏私! | 二元樹 | 雜湊 | 計算機概論 | 工程師 Nic
本文詳細介紹了雜湊表(Hash Table)及雜湊函數(Hash Function)的運作原理與應用,如何解決衝突(Collision)問題,並引入字典樹(Trie)作為另一種資料搜尋結構。透過簡單易懂的比喻和實例,幫助讀者理解這些資料結構的效能和實際用途。
本文介紹了資料庫索引的基本原理、類型以及其在資料查詢中的重要性。索引類似於書的目錄,不僅可以提高查詢效率,還有助於組織資料。文章詳細說明瞭主索引、密集索引、稀疏索引、叢索引和非叢索引的定義與特點,並提供了實際的比喻和例子。透過深入瞭解索引的運作,讀者可以更好地設計和優化資料庫,並提升查詢效能。
本篇文章是作者自學 SQL 的筆記,詳述資料庫中的四種主要語言類別:DDL、DML、TCL 及 DCL,每類別對應的功能與常見操作一一列舉,並深入探討交易的特性及其 ACID 原則。此外,文章還解釋了資料庫的正規化及反正規化的必要性,對於學習 SQL 的讀者有很大的幫助。
本文將逐步拆解如何將 ER 圖轉換為 Schema,深入瞭解 ER 圖的意義以及其對於資料庫設計的重要性。透過影片內容,我們可以學習如何清晰地描述實體關係,並將複雜的資料結構轉化為易於管理的 Schema 形式。無論是初學者或有經驗的資料庫管理者,都能從中獲得實用的技巧和知識。
本文探討資料庫設計的基本概念,區別了 Flat-file 和 Database,並詳細介紹了資料庫設計的流程,包括需求分析、ER 圖概念設計、邏輯資料模型和物理模型的轉換。還介紹了關聯式資料庫的基本組成、五大鍵以及各種限制,希望對自學者理解資料庫設計有所幫助。
前一篇提到B樹和B+樹,這篇介紹AVL 樹和經典的紅黑樹。 在開始之前,可以看個輕鬆的影片,對於紅黑樹在真實商業案例的應用更有印象 學習資料結構、演算法在工作上真的有用嗎? 實際工作經歷不藏私! | 二元樹 | 雜湊 | 計算機概論 | 工程師 Nic
本文詳細介紹了雜湊表(Hash Table)及雜湊函數(Hash Function)的運作原理與應用,如何解決衝突(Collision)問題,並引入字典樹(Trie)作為另一種資料搜尋結構。透過簡單易懂的比喻和實例,幫助讀者理解這些資料結構的效能和實際用途。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
在數位化日益深入的今天,駭客網路攻擊成為了各種組織和個人面臨的嚴重挑戰。本文將探討駭客網路攻擊的種類、影響及其防範策略,幫助讀者更好地理解和應對這一重要的安全問題。 什麼是駭客網路攻擊? 駭客網路攻擊是指未經授權的個人或組織通過技術手段,針對計算機系統、網路基礎設施或數據進行的攻擊行為。攻擊者可
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
在數位化日益深入的今天,駭客網路攻擊成為了各種組織和個人面臨的嚴重挑戰。本文將探討駭客網路攻擊的種類、影響及其防範策略,幫助讀者更好地理解和應對這一重要的安全問題。 什麼是駭客網路攻擊? 駭客網路攻擊是指未經授權的個人或組織通過技術手段,針對計算機系統、網路基礎設施或數據進行的攻擊行為。攻擊者可
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。