你在畫畫時收到別人的貼紙
有些貼紙放在畫上變得很好看
但有的貼紙卻會把你的畫毀掉
a-z0-9@._-
<
→ <
)username = admin
password = ' OR '1'='1
query = f"SELECT * FROM users WHERE username = '{username}' AND password = '{password}'"
cursor.execute(query)
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1'
'' OR '1'='1' 等於 TRUE
所以只要名單裡面有 admin
便能通過系統判斷
cursor.execute(
"SELECT * FROM users WHERE username = ? AND password = ?",
(username, password)
)
參數化查詢 → 避免字串被當成 SQL 指令
使用者輸入
上傳內容是 PHP 程式的檔案
<?php
system($_GET['cmd'],$out));
var_dump($out);
?>
file.save("uploads/" + filename)
安全修改方式:
/data/uploads/
)escapeshellcmd()
和 escapeshellarg()
system()
, exec()
, shell_exec()
📌 不可以亂試喔!
多數注入攻擊都靠未經處理的輸入
先正規化(統一形式)、再驗證(prefer 白名單)
最後在輸出時依上下文做編碼/轉譯
配合最小權限、日誌監控
檔案上傳防護與安全 API 設計
能把大多數基本攻擊風險大幅降低