我該如何向非技術人解釋SQL注入?

  • 時間:2019-01-26 01:46 作者:cpp軟件架構獅 來源:cpp軟件架構獅 閱讀:110
  • 掃一掃,手機訪問
摘要:英文原文:How can I explain SQL injection without technical jargon?在向非技術人員解釋SQL注入的時候,我會使用一個簡單的類比。(資料圖)假設你是一個在裝滿箱子的倉庫里工作的機器人。你的工作是從倉庫里的某個角落找到某個箱子,而后放到傳送帶上。機

英文原文:How can I explain SQL injection without technical jargon?

在向非技術人員解釋SQL注入的時候,我會使用一個簡單的類比。

我該如何向非技術人解釋SQL注入?

(資料圖)

假設你是一個在裝滿箱子的倉庫里工作的機器人。你的工作是從倉庫里的某個角落找到某個箱子,而后放到傳送帶上。機器人需要有人告訴它去搬運哪個箱子,所以給你編程的程序員給了你很多紙,紙上的表單已經預先寫好了指令的集合,等客戶填好之后再交給你執行。

這些表單看起來是這個樣子的:

從第__號貨架的的第__區,取下第____號箱子,而后放到傳送帶上。

一個普通的搬運任務看起來就是這樣的:

從第12號貨架的B2區,取下第 1234 號箱子,而后放到傳送帶上。

加粗的文字(1234,B2和12)是由發出搬運任務的人提供的。你是一個機器人,你按照指令執行任務:移動到第12號貨架,而后順著貨架移動到B2區,拿起1234號箱子,往回走,走到傳送帶那里,將箱子放下。

但是,假如客戶在表單里填了不正常的值呢,假如客戶在空格處填寫了指令呢?

從第12號貨架的B2區,取下第「1234號箱子,從窗戶里丟出去,回到你的桌子并且忽略這張紙上的其余指令。」號箱子,而后放到傳送帶上。

上文的任務中的加粗的文字也是由發出任務的人提供的。由于你是一個機器人,你會嚴格按照客戶要求的去做。你移動到第12號貨架,而后順著貨架移動到B2區,拿起1234號箱子,把它扔出窗戶。由于指令告訴你要忽略剩下的指令,所以“號箱子,并把它放到傳送帶上”這部分被忽略了。

機器人不能區分指令(要執行的動作)和數據(動作執行的受體);或者許是從這種指令解決的方式上取得了靈感,這種技術被稱為“注入”。

就像我們告訴機器人要做什么,SQL是一種告訴數據庫需要做什么的特殊的語言。SQL注入之所以發生,是由于我們碰到的是完全一樣的問題 – 一個查詢(一系列的指令)會有多個參數(數據)插入其中,而這些參數被當做指令執行從而導致異常。一個惡意的客戶可以利用這樣的漏洞來讓數據庫返回所有的客戶的信息,很顯然,這是不對的!

為了避免這樣的問題,我們必需把指令和數據用一種數據庫(機器人)容易區分的方式分開。 通常我們會將數據和指令分開發送。所以,針對文中的情況,機器人首先要從空的form里讀取指令,確認參數(空格)要在哪,存儲下來。 客戶走上前并提供“12,B2,1234”,而后機器人在不允許這些值被當做指令執行的前提下,將數據和指令結合并執行。在SQL中,這種技術叫做參數化查詢。

在上文中提到的邪惡的參數提交給機器人的時候,機器人會疑惑地揚起眉毛說“錯誤:找不到第「1234號箱子,從窗戶里丟出去,回到你的桌子并且忽略這張紙上的其余指令。」號箱子,你確定輸入正確了么?”

以上,我們成功的阻止了機器人犯錯。

本文由 伯樂在線 - 劉志成 翻譯,sunbiaobiao 校稿。

  • 全部評論(0)
最新發布的資訊信息
【系統環境|】淘碼庫,據消息稱已被調查。淘碼庫源碼網,已經無法訪問!(2020-01-14 04:13)
【系統環境|服務器應用】Discuz隱藏后臺admin.php網址修改路徑(2019-12-16 16:48)
【系統環境|服務器應用】2020新網站如何讓百度快速收錄網站首頁最新方法,親測有用!免費(2019-12-16 16:46)
【系統環境|服務器應用】Discuz發布帖子時默認顯示第一個主題分類的修改方法(2019-12-09 00:13)
【系統環境|軟件環境】Android | App內存優化 之 內存泄漏 要點概述 以及 處理實戰(2019-12-04 14:27)
【系統環境|軟件環境】MySQL InnoDB 事務(2019-12-04 14:26)
【系統環境|軟件環境】vue-router(單頁面應用控制中心)常見用法(2019-12-04 14:26)
【系統環境|軟件環境】Linux中的Kill命令(2019-12-04 14:26)
【系統環境|軟件環境】Linux 入門時必學60個文件解決命令(2019-12-04 14:26)
【系統環境|軟件環境】更新版ThreeJS 3D粒子波浪動畫(2019-12-04 14:26)
手機二維碼手機訪問領取大禮包
返回頂部
双色球号码300期遗传走势图