CS KAIROS · LEARNING LIBRARY
M15 · SQL 注入 · 安全練習
本章只使用離線資料、自製輸入或紙上情境。依下列步驟完成,再核對自己留下的證據。
離線練習:記憶體資料庫查詢
本機 Python 3 與 sqlite3 標準模組;不建立磁碟資料庫、不連線,也不使用真實個資。
- 閱讀下方程式,找出固定 SQL 與綁定值的位置。
- 在本機執行,核對輸出。
- 把查詢值改成不存在的名稱,預期空清單。
import sqlite3
con = sqlite3.connect(":memory:")
try:
con.execute("CREATE TABLE people (name TEXT)")
con.execute("INSERT INTO people VALUES (?)", ("O'Neil",))
print(con.execute("SELECT name FROM people WHERE name = ?", ("O'Neil",)).fetchall())
finally:
con.close()預期結果
第一次輸出 [("O'Neil",)];查詢不存在名稱時輸出 []。
自行檢核
如果改用參數作資料表名稱,為什麼不是同一種綁定問題?
結束與清理
程式結束即關閉記憶體資料庫,不留下資料檔。