moea_joint_essay
108年
[資訊] 資訊管理、程式設計
第 一 題
📖 題組:
有一 Web 程式系統,由使用者輸入 ID 及地址,並由後端接收處理程式進行資料庫相關處理,其前端畫面輸入欄位、對應之 Html 碼及後端接收處理程式如下,試回答下列問題:(14 分) 前端畫面輸入欄位: 對應之輸入欄位 Html 碼: 請輸入 ID: < input type= " text " name= " id " > 請輸入地址: < input type= " text " name= " address " > 確定 取消 後端接收處理程式及註解(雙斜線//後為註解): < % .....................................................//以上省略 $id = Request( " id " ); //取得輸入 ID 欄位資料 $address = Request( " address " ); //取得輸入地址欄位資料 $sqlstring = " Select * from idtable where id = `"+$id+"` "; // id 是否存在於 idtable 資料表 $result = sql_query( $sqlstring ); //進行資料庫查詢及結果 ....................................................//以下省略 % >
有一 Web 程式系統,由使用者輸入 ID 及地址,並由後端接收處理程式進行資料庫相關處理,其前端畫面輸入欄位、對應之 Html 碼及後端接收處理程式如下,試回答下列問題:(14 分) 前端畫面輸入欄位: 對應之輸入欄位 Html 碼: 請輸入 ID: < input type= " text " name= " id " > 請輸入地址: < input type= " text " name= " address " > 確定 取消 後端接收處理程式及註解(雙斜線//後為註解): < % .....................................................//以上省略 $id = Request( " id " ); //取得輸入 ID 欄位資料 $address = Request( " address " ); //取得輸入地址欄位資料 $sqlstring = " Select * from idtable where id = `"+$id+"` "; // id 是否存在於 idtable 資料表 $result = sql_query( $sqlstring ); //進行資料庫查詢及結果 ....................................................//以下省略 % >
📝 此題為申論題,共 3 小題
小題 (一)
請問上述設計會產生何種資料庫資安風險?(2 分)
思路引導 VIP
觀察後端程式碼將使用者輸入的 $id 直接串接到 SQL 語句中,未做任何過濾或參數化,判斷為 SQL Injection 漏洞。
小題 (二)
請列舉上述資安風險對系統及資料所產生之危害。(4 分)
思路引導 VIP
說明 SQL Injection 可能造成的具體危害,如繞過驗證、資料外洩、資料竄改或刪除等。
小題 (三)
請在不變動系統任何設定及前端輸入下,就你所知道之任一程式語言(含虛擬碼),在後端接收處理程式新增字串處理函數 checkdata(xxxx),傳入參數為使用者輸入之資料,經處理後傳回無風險之資料(除宣告函數外,每行程式碼皆須註解處理內容,未加註解者不予計分)。(8 分)
思路引導 VIP
實作 checkdata 函數,使用常見的輸入過濾機制(如跳脫特殊字元),並依照題目要求為每一行加上註解。