FTC 發佈了關於惡意 QR Code 的警告?2026 年 9 月 3 日,美國聯邦貿易委員會 (FTC) 發布消費者警報,警告駕駛者詐騙者正將偽造的 QR Code 貼紙覆蓋在合法的停車計費器代碼上,以將使用者導向冒牌付款入口網站。對於企業安全架構師、增長工程師和數位行銷負責人而言,落實「安全線下推薦追蹤 (Secure Offline Referral Tracking)」已成為迫在眉睫的架構重點。雖然熱門的產業術語「quishing」(QR Code 釣魚)通常描述針對消費者的付款詐騙,但其底層的物理攻擊機制同樣直接影響現實世界的軟體發布。當實體資產(如零售銷售終端顯示器、活動橫幅和合作夥伴推薦傳單)面臨標籤替換或查詢篡改風險時,連結線下使用者發現與數位歸因的資料管道就會失效。為了保障行銷支出並維護客戶信任,工程團隊必須重新評估線下推薦架構,將實體標籤安全與加密負載驗證及後續的安裝路由流程區隔開來。

FTC 警告與物理攻擊向量
FTC 的消費者警報標題為「看到停車處的 QR Code?先別掃描!」,指出了非接觸式實體互動中日益嚴重的漏洞。根據該機構引用的報告,詐騙者將偽造的 QR Code 貼紙直接貼在市政停車計費器、繳費站和公共停車標誌的合法條碼上。當駕駛者掃描被篡改的代碼以準備繳納停車費時,裝置會開啟一個旨在蒐集支付卡資訊、使用者憑證與個人身分識別資訊的冒牌網站。
重點總覽
- 物理標籤替換:攻擊者將黏貼式的偽造 QR 標籤覆蓋在合法的公共條碼上,利用肉眼無法在掃描前解碼或驗證矩陣條碼的特性。
- 憑證與付款竊取:受害者進入詐騙入口網站,導致敏感的付款與帳戶資料外洩,駕駛者不僅蒙受財務損失,原本的停車費也未正常繳納。
- 線下獲客領域的威脅平行:FTC 警報中強調的物理替換機制,對於依賴未受保護之靜態 QR Code 的線下企業推薦方案與零售活動而言,同樣構成廣泛風險。

根據 WUSA9 的調查報導,QR Code 詐騙利用了便利性,隱藏目標伺服器,直到光學識別完成後才揭露。儘管手機相機視窗通常會顯示目標 URL 預覽,但同形異義字網域處理(例如替換外觀相似的 Unicode 字元)和截斷的螢幕提示,常使在快節奏公共環境中掃描代碼的使用者難以察覺。
物理冒牌詐騙的風險延伸至多個商業場景。在 美聯社 (Associated Press) 對更廣泛詐騙模式的分析中,網路安全專家指出,QR Code 標籤篡改現象已出現在飯店與餐飲環境,包括餐廳和咖啡廳的桌面付款代碼被更換為惡意標籤。此外,報導中引用的 FTC 詐騙統計數據顯示,消費者在各類溝通管道因冒牌詐騙損失了數十億美元,凸顯了具有欺騙性的觸點將如何嚴重削弱使用者信心。
+-------------------------------------------------------------------------+ | FTC 停車計費器 QR Code 釣魚攻擊向量 | +-------------------------------------------------------------------------+ | | | [ 合法物理資產:停車計費器 / 市政繳費看板 ] | | | | | |-- (攻擊者將偽造 QR 貼紙覆蓋在表面上) | | v | | [ 被篡改的公眾展示表面 ] | | | | | |-- (駕駛者透過原生相機掃描貼紙) | | v | | [ 手機瀏覽器開啟攻擊者控制之 URL ] | | | | | v | | [ 冒牌停車繳費入口 ] | | | | | +---------------------------------------+ | | | | | | v v | | [ 銀行卡資料與憑證遭竊 ] [ 停車費未繳納 ] | | | | | | v v | | [ 財務盜竊 / 身分詐欺 ] [ 收到市政罰單 ] | | | +-------------------------------------------------------------------------+
此攻擊模式揭示了一項營運界線:普通的印刷 QR 表面並不能從本質上驗證物理標籤或其發行者。由於紙張、壓克力和金屬顯示器無法驗證其自身的結構完整性,因此在現實世界進行數位交接時,必須在物理、傳輸和應用層實施不同的防禦控制。
類比風險:線下推薦追蹤與歸因篡改
雖然市政停車詐騙集中於付款憑證竊取,但同樣的物理替換原則也可能影響線下行銷素材與合作夥伴推薦計畫。企業品牌在零售店櫃檯、促銷包裝、會議展示和戶外海報上部署數以百萬計的實體 QR Code,以推動客戶獲取。

在傳統的成長行銷活動中,線下推薦碼通常會編碼為靜態的明文追蹤連結:
https://promo.example.com/join?channel_id=store_108&promoter_id=rep_4401
當線下推薦追蹤依賴未受保護的靜態字串時,成長系統會面臨兩項明顯的安全挑戰:
- 物理標籤替換:未經授權方可在零售展示或合作夥伴海報上貼上黏貼標籤。如果更換後的代碼指向競爭對手的聯屬帳號或欺詐網站,潛在客戶會掃描到惡意代碼,導致商業績效遭到竊取或使用者暴露於釣魚風險中。
- 查詢參數篡改:如果使用者掃描了合法的印刷代碼,但該代碼開啟的是未經驗證的網頁中間層,那麼未受保護的查詢字串可能會被惡意瀏覽器擴充功能或中間重新導向指令碼移除、重寫或附加,從而破壞推薦績效核算。
+-------------------------------------------------------------------------+ | 線下推薦威脅分類 | +-------------------------------------------------------------------------+ | | | [ 物理促銷資產(例如:店內合作夥伴海報) ] | | | | | +---------------------------------------+ | | | | | | v v | | (攻擊 1:物理替換) (攻擊 2:參數篡改) | | 攻擊者在合法海報上覆蓋偽造標籤 在用戶端重新導向過程中修改 | | 明文查詢字串 | | | | | | v v | | [ 指向惡意網域 / 通路 ] [ 推廣者 ID 被重寫 ] | | | | | | v v | | [ 推薦績效遭竊取 / 遺失 ] [ 通路佣金歸因錯誤 ] | | | +-------------------------------------------------------------------------+
為了維持可驗證的推薦脈絡,安全架構師必須正確對物理與數位威脅進行分類:
| 攻擊向量 | 潛在機制 | 主要業務影響 | 架構對策 |
|---|---|---|---|
| 物理貼紙覆蓋 | 將偽造標籤貼在合法的海報 QR 上 | 流量被導向攻擊者網域或競爭通路 | 防篡改材質、定期審核、驗證 App 連結 |
| 參數篡改 | 修改明文 promoter_id 或 channel_id |
佣金給付歸因錯誤與通路分析數據失真 | 伺服器端密碼學 Token 簽章 (HMAC-SHA256) |
| 代碼爬取與重放 | 靜態活動 Token 被複製並發佈至論壇 | 跨區、非增量式數位認領 | Token 生命周期管理、重放防禦與伺服器端規則 |
| 自動化點擊流入 | 機器人程式觸發網頁重新導向端點 | 轉換漏斗頂部指標數據偏離 | Web 層速率限制與異常遙測 |
三層架構:物理、傳輸與負載防禦
行動工程領域的一個常見誤區是認為加密 URL 簽章可以防止物理 QR Code 替換。實際上,如果攻擊者貼上指向其控制網域的偽造貼紙,受害者的裝置永遠不會查詢合法的品牌基礎設施。因此,全面的防禦需要三個協調的層級:
+-------------------------------------------------------------------------+ | 三層式線下推薦防禦架構 | +-------------------------------------------------------------------------+ | | | 第一層:物理完整性 | | - 防篡改基材(易碎貼紙、Void 標籤) | | - 防護外殼(壓克力框、玻璃後顯示) | | - 公共資產的定期物理檢查協議 | | | | | v | | 第二層:網域與 App 關聯及路由信任 | | - 清晰、對使用者可見的官方 HTTPS 網域品牌標示 | | - 經驗證的 Apple 通用連結 (Universal Links) / Android App 連結 | | - 確保受篡改的第三方網域無法呼叫原生 App | | | | | v | | 第三層:負載與 Token 完整性 | | - 伺服器產生的加密 Token (HMAC-SHA256 簽章) | | - 攝入時的伺服器端簽章與時間戳記驗證 | | - 防止未經授權 Token 重複使用的活動生命週期控制 | | | +-------------------------------------------------------------------------+
第一層:物理完整性與檢查
物理控制可減輕貼紙覆蓋攻擊。高價值零售資產應採用防篡改材質(如嘗試移除時會碎裂的易碎貼紙),或將條碼展示在防護玻璃與數位顯示終端後。店內員工應進行定期巡檢,以核實促銷展示未遭篡改。
第二層:網域與 App 關聯及經驗證的 App 連結路由信任
當使用者掃描合法的實體條碼時,經驗證的應用程式連結機制(如 Apple Universal Links 與 Android App Links)可建立經驗證的網域到 App 路由。透過驗證由官方網域透過 HTTPS 提供的作業系統認證關聯檔案(apple-app-site-association 與 assetlinks.json),作業系統會將已安裝應用程式的使用者直接導向原生 App,而無需經歷未經驗證的中間瀏覽器重新導向。如果掃描到指向未經驗證第三方網域的欺詐貼紙,商家的原生 App 將不會攔截該連結,讓具有安全意識的使用者能在瀏覽器網址列中識別出網域不符的情況。
第三層:透過伺服器端簽章驗證實現負載完整性
為了防止中間層修改查詢參數,推薦連結應編碼為簽章 Token,而非純明文字串。安全歸因服務會使用伺服器端秘密金鑰,產生 HMAC-SHA256 簽章,將通路 ID、活動參數與發行時間戳記綁定:
當連結開啟時,接收方的網頁伺服器會使用伺服器端秘密金鑰驗證簽章。如果攻擊者修改了 pid=rep_4401 以替換為另一個聯屬帳號,簽章將失效,歸因績效也會被拒絕。對於動態螢幕顯示,Token 可整合短期的存活時間 (TTL);對於靜態印刷素材(如永久性店內海報),伺服器會強制執行活動層級的有效性時間窗口與狀態檢查。
// 用於驗證加密簽章線下推薦 Token 的示意伺服器端實作。
// 在生產環境中,此邏輯執行於經過驗證的後端服務或攝入閘道,
// 以保持對稱秘密金鑰的機密性,並防止在用戶端二進位檔中暴露。
import Foundation
import CryptoKit
struct SignedReferralPayload {
let channelId: String
let promoterId: String
let timestamp: TimeInterval
let signatureHex: String
}
enum TokenValidationError: Error {
case invalidURLStructure
case missingRequiredClaims
case tokenExpired(age: TimeInterval)
case signatureInvalid
}
final class ReferralTokenVerifier {
private let serverSecretKey: SymmetricKey
/// 使用安全儲存的伺服器端主金鑰初始化驗證器
init(secretKeyData: Data) {
self.serverSecretKey = SymmetricKey(data: secretKeyData)
}
/// 驗證傳入推薦請求的 HMAC-SHA256 簽章與有效期限窗口
func verifyToken(from url: URL, maxAgeSeconds: TimeInterval = 86400) throws -> SignedReferralPayload {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true),
let queryItems = components.queryItems else {
throw TokenValidationError.invalidURLStructure
}
// 提取標準歸因主張
guard let channelId = queryItems.first(where: { $0.name == "cid" })?.value,
let promoterId = queryItems.first(where: { $0.name == "pid" })?.value,
let timestampStr = queryItems.first(where: { $0.name == "ts" })?.value,
let timestamp = TimeInterval(timestampStr),
let providedSignatureHex = queryItems.first(where: { $0.name == "sig" })?.value else {
throw TokenValidationError.missingRequiredClaims
}
// 1. 若配置了過期窗口,則驗證 Token 的時效性
let currentTimestamp = Date().timeIntervalSince1970
let tokenAge = currentTimestamp - timestamp
if tokenAge > maxAgeSeconds || tokenAge < -60 { // 拒絕過期或未來日期之 Token
throw TokenValidationError.tokenExpired(age: tokenAge)
}
// 2. 重建標準訊息字串:"cid={cid}&pid={pid}&ts={ts}"
let canonicalMessage = "cid=\(channelId)&pid=\(promoterId)&ts=\(timestampStr)"
guard let messageData = canonicalMessage.data(using: .utf8),
let providedSignatureData = Data(hexString: providedSignatureHex) else {
throw TokenValidationError.invalidURLStructure
}
// 3. 使用 CryptoKit 進行密碼學常數時間驗證
guard HMAC<SHA256>.isValidAuthenticationCode(providedSignatureData,
authenticating: messageData,
using: self.serverSecretKey) else {
throw TokenValidationError.signatureInvalid
}
return SignedReferralPayload(
channelId: channelId,
promoterId: promoterId,
timestamp: timestamp,
signatureHex: providedSignatureHex
)
}
}
private extension Data {
/// 將十六進位表示法轉換為原始 Data 位元組的輔助功能
init?(hexString: String) {
let len = hexString.count / 2
var data = Data(capacity: len)
var index = hexString.startIndex
for _ in 0..<len {
let nextIndex = hexString.index(index, offsetBy: 2)
if let byte = UInt8(hexString[index..<nextIndex], radix: 16) {
data.append(byte)
} else {
return nil
}
index = nextIndex
}
self = data
}
}
下游行動裝置獲客與安裝界線脈絡
雖然伺服器端參數簽章可驗證傳入推薦連結的完整性,但行動裝置獲客引進了另一個架構挑戰:在潛在客戶未安裝原生 App 時管理線下歸因。
在線下獲客漏斗中,遭遇店內促銷海報的客戶通常是初次造訪者。如果使用者在未安裝應用程式的情況下掃描了經驗證的推薦 QR Code,作業系統會將請求路由至行動網頁備用頁面。
+-------------------------------------------------------------------------+ | 獨立的線下獲客安裝流程 | +-------------------------------------------------------------------------+ | | | [ 實體零售觸點:真實的店內 QR Code ] | | | | | |-- (客戶使用手機相機掃描代碼) | | v | | [ 合法 HTTPS 網頁登陸頁 ] | | | | | |-- (伺服器攝入驗證 Token 簽章與狀態) | | v | | [ 使用者透過下載 CTA 導向 Apple App Store / Google Play ] | | | | | v | | [ 商店安裝障礙:標準商店流程無法在首次啟動時自動重構網頁脈絡 ] | | | | | v | | [ 應用程式冷啟動:首次啟動執行 ] | | | | | v | | [ 延遲深度連結引擎:伺服器輔助訊號配對 ] | | | | | v | | [ 合規脈絡恢復:App 套用歸因與路由邏輯 ] | | | +-------------------------------------------------------------------------+
當使用者從行動網頁登陸頁導向 Apple App Store 或 Google Play Store 時,標準商店安裝流程不會在首次啟動時自動重構原始網頁 URL 與活動上下文;平台特定的參照器機制僅能揭露有限的安裝元數據。
為了在不強迫客戶手動輸入實體優惠碼(免填邀請碼)的情況下跨越此安裝界線,工程團隊會部署延遲深度連結 (Deferred Deep Linking, DDL) 架構。諸如 Opoinstall 等平台,會利用伺服器輔助配對,將安裝前的網頁點擊元數據與首次啟動的應用程式設定檔進行關聯。
根據供應商的不同,線下歸因架構可能包含:
- 通路與來源驗證:歸因平台在網頁層攝入經過驗證的促銷參數,並在商店重新導向之前快取活動元數據。
- 冷啟動參數恢復:在首次啟動時,行動用戶端 SDK 會向歸因後端查詢以擷取已快取的推薦負載,允許應用程式核實實體店鋪通路並顯示相關的引導式促銷。
- 供應商特定的異常遙測:某些歸因與測量平台提供專業監控,以檢測異常流量模式或時間間距差異,並根據供應商實作提供特定的檢測規則。
根據 Opoinstall 官網上的平台說明文件,此種延遲參數恢復架構可在高達 98% 的合格執行實例中,將安裝前的點擊元數據與初始冷啟動進行配對,為手動輸入促銷代碼提供了一種自動化替代方案。
透過將物理展示防護措施與伺服器端 URL 簽章驗證及可靠的延遲參數恢復相結合,組織可以協助現實世界的探索更加可靠且安全地連接至數位應用程式生命週期。
常見問題 (FAQ)
FTC 對 QR Code 提出了什麼威脅警告?
加密簽章可以防止物理 QR Code 被更換嗎?
行動應用程式如何保留跨應用程式商店安裝的推薦脈絡?
安全與成長架構師的關鍵要點
FTC 關於偽造停車計費器 QR Code 的警告強調了一個重要的安全事實:實體公共表面屬於不可信環境。隨著組織在零售場所與公共活動中擴展線下行銷與推薦計畫,未經驗證的靜態連結會帶來諸多漏洞。
對於軟體架構師與成長領袖而言,確保線下歸因需要一個整合的、多層次的策略。物理資產必須結合防篡改設計,行動連結應利用經驗證的 App 連結協議以維持網域信任,參數完整性則應使用伺服器端密碼學簽章進行保障。透過將這些保護措施與穩健的延遲深度連結及流量監控相連接,工程團隊能夠建構出具備韌性的線下客戶獲取管道,以抵禦現實世界的威脅。
參考文獻
-
Federal Trade Commission. (2026). Consumer Alert: See a QR code parked somewhere? Don’t scan it…yet!. FTC Consumer Advice. https://consumer.ftc.gov/consumer-alerts/2026/09/see-qr-code-parked-somewhere-dont-scan-ityet
-
WUSA9. (2026). QR code scams are back. Here’s how to stay safe. https://www.wusa9.com/article/money/wheres-the-money/qr-code-scam-quishing-warning/65-e546dc12-65f8-4ffd-a6f2-3658d2e437a0
-
Associated Press. (2026). Travel scams are getting harder to spot. Here’s how to stay safe. https://apnews.com/article/travel-scams-financial-wellness-safety-1d69aaa34876cf4bd0821da6aeb0f9d6
-
Apple Developer. (2026). Supporting Universal Links in your app. Apple Documentation. https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app
-
Android Developers. (2026). Verify Android App Links. Android Documentation. https://developer.android.com/training/app-links/verify-applinks
-
Opoinstall. (2026). Deferred Deep Linking and Parameterized App Installation Overview. https://www.opoinstall.com/
Share this article



