駭客概念: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):
    • 資料跨伺服器分布,適合處理大數據。

留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
14會員
62內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
本文探討 SQL 注入(SQL Injection)的攻擊原理及其防護措施。透過具體範例,解釋駭客如何利用應用程式漏洞進行資料庫攻擊,並提供有效的防範方法,包括使用參數化查詢、ORM 框架和輸入驗證等技術,確保應用程式的安全性。最後還簡介資料庫分區與分片的概念,讓讀者更全面理解如何管理和保護資料庫。
Thumbnail
本文探討 SQL 注入(SQL Injection)的攻擊原理及其防護措施。透過具體範例,解釋駭客如何利用應用程式漏洞進行資料庫攻擊,並提供有效的防範方法,包括使用參數化查詢、ORM 框架和輸入驗證等技術,確保應用程式的安全性。最後還簡介資料庫分區與分片的概念,讓讀者更全面理解如何管理和保護資料庫。
Thumbnail
李天明了解到大型電腦系統,譬如銀行系統,都設有反駭客小組,專門針對系統漏洞進行測試,確保系統的安全性。他認為,公司的ERP系統和其他核心系統也需要這樣一個小組來保障安全,特別是在最近發現了多處漏洞後,這種需求顯得尤為迫切。 李天明決定將這個建議告訴黃瑜。一天上午,他敲響了黃瑜辦公室的門,進
Thumbnail
李天明了解到大型電腦系統,譬如銀行系統,都設有反駭客小組,專門針對系統漏洞進行測試,確保系統的安全性。他認為,公司的ERP系統和其他核心系統也需要這樣一個小組來保障安全,特別是在最近發現了多處漏洞後,這種需求顯得尤為迫切。 李天明決定將這個建議告訴黃瑜。一天上午,他敲響了黃瑜辦公室的門,進
Thumbnail
「Prompt hacking」與利用軟件漏洞的傳統駭客方法不同,Prompt hacking 是使用精心設計的提詞工程,並利用大型語言模型(Large Language Models, LLM)中的漏洞,使它們執行意外的操作或透露敏感信息。
Thumbnail
「Prompt hacking」與利用軟件漏洞的傳統駭客方法不同,Prompt hacking 是使用精心設計的提詞工程,並利用大型語言模型(Large Language Models, LLM)中的漏洞,使它們執行意外的操作或透露敏感信息。
Thumbnail
我們分析了許多加密貨幣詐騙案例,歸納出一些共通的行為特徵要告訴你,讓你防患於未然;萬一日後自己或朋友遇到類似情境,就可以馬上辨識出這些警訊,避免成為加密貨幣詐騙的受害者。
Thumbnail
我們分析了許多加密貨幣詐騙案例,歸納出一些共通的行為特徵要告訴你,讓你防患於未然;萬一日後自己或朋友遇到類似情境,就可以馬上辨識出這些警訊,避免成為加密貨幣詐騙的受害者。
Thumbnail
前情提要: 記憶體分析在數位鑑識調查中為其重要,有時候駭客或者「有心人士」想要湮滅證據 or 毀屍滅跡時,會進行目標證據檔案(也就是被害人的電腦或伺服器)硬碟清除,格式化硬碟多次,洗掉整個犯案軌跡,這時候記憶體分析可能是此案找到證據的重要關鍵。 注意:本研究僅供使用自身電腦,伺服器 or 虛擬機
Thumbnail
前情提要: 記憶體分析在數位鑑識調查中為其重要,有時候駭客或者「有心人士」想要湮滅證據 or 毀屍滅跡時,會進行目標證據檔案(也就是被害人的電腦或伺服器)硬碟清除,格式化硬碟多次,洗掉整個犯案軌跡,這時候記憶體分析可能是此案找到證據的重要關鍵。 注意:本研究僅供使用自身電腦,伺服器 or 虛擬機
Thumbnail
sqlmap是一個python的滲透測試工具 SQL 注入 **SQL 注入(SQL injection)**利用了網路程式(Web apps)的錯誤輸入。駭客可以透過執行後端資料庫的網路程式,惡意繞過 SQL 指令。 SQL 注入能在未授權的情況下,直接從資料庫訪問資料庫與檢索信息。許多數據洩露肇
Thumbnail
sqlmap是一個python的滲透測試工具 SQL 注入 **SQL 注入(SQL injection)**利用了網路程式(Web apps)的錯誤輸入。駭客可以透過執行後端資料庫的網路程式,惡意繞過 SQL 指令。 SQL 注入能在未授權的情況下,直接從資料庫訪問資料庫與檢索信息。許多數據洩露肇
Thumbnail
在資訊性的時代,幾乎每個企業都有自己的網站,提供最大價值及免費的資訊吸引受眾及潛在客戶,從而提高曝光率及點擊率,有助將其轉換成銷量。若資訊安全的預防措施不足,容易受到網絡攻擊及內部安全問題。在這情況下更顯得網站漏洞掃描對企業的重要性,下文會為大家一一講解網站漏洞掃描。 為什麼企業需要網站漏洞掃描?
Thumbnail
在資訊性的時代,幾乎每個企業都有自己的網站,提供最大價值及免費的資訊吸引受眾及潛在客戶,從而提高曝光率及點擊率,有助將其轉換成銷量。若資訊安全的預防措施不足,容易受到網絡攻擊及內部安全問題。在這情況下更顯得網站漏洞掃描對企業的重要性,下文會為大家一一講解網站漏洞掃描。 為什麼企業需要網站漏洞掃描?
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News