資訊安全基礎

作為SQL隱碼攻擊的對策,使用預留位置的參數化查詢(prepared statement),被視為比去除輸入中危險字元的方法更根本的對策。理由是什麼?

  1. A把輸入加密後再傳給資料庫,因此攻擊者無法讀取內容
  2. B在瀏覽器端檢查輸入的字元種類,因此不當的字串不會送到伺服器
  3. C先確定SQL敘述的結構,之後只把輸入當作值傳入,因此無論輸入包含什麼字元,都不會被解讀為命令的一部分
查看答案與解析

正確答案:C. 先確定SQL敘述的結構,之後只把輸入當作值傳入,因此無論輸入包含什麼字元,都不會被解讀為命令的一部分

使用參數化查詢時,先把值的部分以符號(預留位置)表示的SQL敘述,例如「SELECT … WHERE id = ? AND password = ?」,交給資料庫確定其結構,之後再把輸入只當作值結合進去(繫結)。輸入自始至終都被當作資料處理,即使包含引號,也不會成為附加條件之類的命令的一部分。去除或跳脫危險字元的方法,必須毫無遺漏地處理各種資料庫與字元編碼的細部規則,只要有一處遺漏,攻擊就會成功。此外,在瀏覽器端檢查輸入,只要攻擊者不經瀏覽器直接送出請求就能繞過,因此只是為了便利,並不是安全對策。再加上把連接資料庫的帳號權限設為最小,就能縮小損害。

  • A. 參數化查詢並不會加密輸入。重點在於把值與SQL敘述的結構分開處理。
  • B. 瀏覽器端的檢查只要直接送出請求就能繞過,因此不能算是對策。
  • C. 正確。先固定敘述的結構,輸入只當作值處理,因此不會被解讀為命令。
練習這個領域 前往領域頁面

相關計算工具

資訊安全基礎的其他題目

  1. 某留言板網頁應用程式有一個漏洞:使用者張貼的文章中所含的指令碼,會在其他瀏覽者的瀏覽器中執行。此漏洞的名稱與根本對策的組合,正確的是哪一項?
  2. 某網頁應用程式有一個漏洞:保持登入狀態的使用者若開啟攻擊者準備的陷阱網頁,使用者的瀏覽器就會向正規網站送出使用者並未意圖的匯款或設定變更請求。下列何者是適當的對策?
  3. 某網頁應用程式把URL參數所指定的檔名,與公開用資料夾的名稱串接後讀取並顯示。若指定包含 ../ 的值作為檔名,公開用資料夾外的設定檔等就會被讀取。此攻擊的名稱與對策的組合,正確的是哪一項?
  4. 網頁應用程式若在登入前後持續使用相同的工作階段ID,攻擊者可能讓使用者使用攻擊者事先準備的工作階段ID,並在使用者登入後以該ID冒充使用者。對這種攻擊最適當的對策是哪一項?
  5. 下列何者正確描述DDoS攻擊?