mybid
拍賣知識 · 11 分鐘閱讀 · 13 次閱讀

拍賣網站的 SSL 與資安設計:保護買賣雙方的交易安全

拍賣網站的 SSL 設定跟資安防護該怎麼做?從憑證選擇到 CSP 設定,完整分享實務經驗。

一句話總結:拍賣網站的 SSL 不只是裝個憑證那麼簡單,從 HTTPS 全站加密到 CSP、CORS、API Token 管理,每一層都是在保護買賣雙方的真金白銀。

你知道嗎?根據 Google 的透明度報告,2025 年全球前 100 大網站中已經有 98% 預設使用 HTTPS。但在拍賣圈子裡,我還是看到不少中小型平台連最基本的 SSL 都沒裝好——有的用過期憑證、有的混用 HTTP 跟 HTTPS、有的 API 端口完全沒加密。

這就像開一間珠寶店,門口掛了「本店有保全」的牌子,結果後門沒鎖。買家的出價紀錄、信用卡資訊、個人地址全部裸奔在網路上,這不是開玩笑的。

我之前幫一個二手精品拍賣平台做資安健檢,發現他們的 WebSocket 連線居然走的是 ws:// 而不是 wss://。也就是說,所有即時出價的資料——誰出了多少錢、目前最高價是多少——全部是明文傳輸。任何在同一個 Wi-Fi 網路下的人,用 Wireshark 抓個封包就能看到一切。後來花了兩天緊急修補,差點沒把他們嚇出心臟病。

SSL 憑證是什麼?拍賣網站為什麼非裝不可?

SSL(Secure Sockets Layer)是一種加密協定,讓瀏覽器與伺服器之間的資料傳輸變成密文,第三方就算攔截到也看不懂。 現在技術上已經演進到 TLS 1.3,但大家習慣還是叫它 SSL。

對拍賣網站來說,SSL 不是加分項,是生存必需品,原因有三:

  1. 出價資料敏感:買家的出價金額、競標策略,一旦被攔截,等於讓對手知道你的底牌
  2. 金流安全:串接第三方支付(綠界、藍新)幾乎都要求 HTTPS,沒有 SSL 連金流都接不上
  3. SEO 排名:Google 從 2014 年就把 HTTPS 列為排名因素,2025 年沒有 SSL 的網站在搜尋結果裡基本被判死刑

根據 SSL Labs 的統計,2025 年取得 A+ 評等的電商網站,平均轉換率比只拿 B 評等的高出 12%。買家看到瀏覽器上那個鎖頭圖示,心裡就多了一份踏實。

SSL 憑證類型比較

如果你對拍賣平台的整體安全防護有興趣,推薦看看拍賣網站安全防護完整指南,那篇從惡意出價到詐騙防範都有深入討論。

SSL 憑證怎麼選?DV、OV、EV 差在哪?

選 SSL 憑證不是越貴越好,而是要看你的平台規模跟需求。 市面上主要分三種:

DV(Domain Validation)網域驗證

  • 只驗證你是不是網域的擁有者
  • 核發速度快,幾分鐘就拿到
  • Let's Encrypt 免費提供,90 天自動續期
  • 適合:剛起步的拍賣平台、MVP 階段

OV(Organization Validation)組織驗證

  • 除了網域,還會驗證公司的真實存在
  • 需要 1-3 個工作天
  • 年費大約 3,000-8,000 台幣
  • 適合:已經有穩定交易量的中型平台

EV(Extended Validation)延伸驗證

  • 最嚴格的驗證等級,需要提交公司登記文件
  • 核發需要 1-2 週
  • 年費 15,000-30,000 台幣
  • 適合:高單價拍品(精品、藝術品)平台,買家信任度需求極高

我的建議是:剛開始用 Let's Encrypt 就夠了,等月交易額破百萬再考慮升 OV。EV 除非你做的是百萬等級的藝術品拍賣,不然投資報酬率不高。

有個小細節要注意:如果你的拍賣平台有多個子網域(api.mybid.twws.mybid.twadmin.mybid.tw),記得買 Wildcard 憑證(*.mybid.tw),不要每個子網域各買一張,省錢也省管理的力氣。

光有 SSL 就夠了嗎?拍賣網站還需要哪些資安層?

SSL 只是資安的第一層皮,拍賣網站要做到真正安全,至少要疊五層防護。 我把它叫做「洋蔥式資安架構」:

第一層:HTTPS 全站強制

這個最基本,但很多人做不徹底。不只是首頁要 HTTPS,包括:

  • 所有圖片 CDN 路徑
  • WebSocket 連線(wss:// 而非 ws://
  • 第三方嵌入的 JavaScript
  • API 端點

在 Nginx 設定裡加上 return 301 https://$host$request_uri; 強制跳轉,再配上 HSTS header:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

這行設定告訴瀏覽器:「接下來一整年,這個網域的所有請求都必須走 HTTPS,包含子網域。」

第二層:Content Security Policy(CSP)

CSP 是防 XSS 攻擊的利器。拍賣網站特別需要注意,因為商品描述欄位通常允許賣家輸入 HTML,這就是 XSS 的溫床。

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.mybid.tw; img-src 'self' https: data:; connect-src 'self' wss://ws.mybid.tw

這段設定限制了:腳本只能從自家網域和 CDN 載入、圖片允許 HTTPS 來源、WebSocket 只能連到指定位址。賣家就算在商品描述裡偷塞 <script> 標籤,瀏覽器也會直接擋掉。

第三層:API 安全

拍賣網站的 API 通常處理最敏感的操作——出價、付款、個資查詢。幾個必做的事:

  • Rate Limiting:每個 IP 每分鐘最多 60 次 API 請求,防止暴力攻擊
  • JWT Token 過期時間:Access Token 設 15 分鐘,Refresh Token 設 7 天
  • 敏感操作二次驗證:修改密碼、提領款項需要重新輸入密碼或 OTP

第四層:資料庫加密

使用者的密碼用 bcrypt 雜湊(Laravel 預設就是),但還有些人會忽略的:

  • 信用卡後四碼要加密儲存(AES-256)
  • 手機號碼跟地址建議加密(符合個資法要求)
  • 出價記錄不加密但要確保 Append-Only,禁止 UPDATE 和 DELETE

第五層:監控與告警

再好的防護都會有漏洞,所以即時監控不能省:

  • 異常登入偵測(同一帳號 10 分鐘內從三個不同國家登入)
  • 異常出價模式(同一 IP 短時間大量出價)
  • SSL 憑證到期提醒(至少提前 30 天)

拍賣資安五層防護架構

想了解拍賣平台的 API 設計細節,可以參考 拍賣 API 設計與生態系

實戰案例:一次資安事件的教訓

去年有個台灣的二手 3C 拍賣平台發生了一起事件。攻擊者利用商品描述欄位的 XSS 漏洞,注入了一段 JavaScript,當買家瀏覽該商品頁面時,腳本會偷偷把買家的 Session Cookie 傳到外部伺服器。攻擊者拿到 Cookie 後就能冒充買家身份登入,查看出價記錄、修改收貨地址。

整件事影響了大約 1,200 個帳號,平台花了將近三週才完全處理完——包括強制所有用戶重設密碼、逐一通知受影響的買家、重新檢視所有商品描述內容。

事後分析,問題出在三個地方:

  1. 商品描述沒有做 HTML Sanitize,賣家可以任意輸入 <script> 標籤
  2. Session Cookie 沒設 HttpOnlySecure 旗標,JavaScript 能直接讀取
  3. 沒有 CSP header,瀏覽器不知道該擋什麼

修復其實不難——Laravel 的 Blade 模板預設就會 escape HTML,問題是他們用了 {!! !!} 來渲染商品描述(為了讓賣家可以設定粗體、顏色之類的)。後來改用白名單式的 HTML Purifier,只允許 <b><i><ul><li> 這些安全標籤,其餘一律過濾。

這個案例告訴我們:資安不是裝完 SSL 就結束了,每一個允許用戶輸入的欄位都是潛在的攻擊面。

WebSocket 連線的安全怎麼做?

拍賣網站的即時出價功能靠 WebSocket 運作,這條持久連線如果沒保護好,等於在你家大門上開了一個永遠不關的窗戶。 幾個重點:

  • 一律用 wss://:就像 HTTP 升級到 HTTPS,WebSocket 也要從 ws:// 升級到 wss://
  • 連線時驗證 Token:不是任何人連上來都給資料,要在 Handshake 階段驗證身份
  • 頻道授權:用 Laravel 的 Private Channel,確保買家只能收到自己參與的拍品更新
  • 心跳偵測:每 30 秒發一次 Ping,超過 90 秒沒回應就斷線,避免殭屍連線佔資源

如果你用 Laravel Reverb 來做即時功能,它的 Private Channel 機制已經處理了大部分授權問題,但 wss:// 的設定還是要自己在 Nginx 那邊配好。

想深入了解 WebSocket 在拍賣場景的應用,可以看即時競標的 WebSocket 架構設計

WebSocket 安全連線流程

資安健檢清單:你的拍賣網站做到幾項?

開發做完之後、上線之前,跑一次這份清單:

項目 重要度 檢查方式
SSL 憑證安裝正確 必要 SSL Labs 線上測試
HTTPS 全站強制 必要 瀏覽器 DevTools 檢查 Mixed Content
HSTS Header Response Header 檢查
CSP Header SecurityHeaders.com 測試
Cookie Secure + HttpOnly 必要 DevTools → Application → Cookies
WebSocket 使用 wss:// 必要 DevTools → Network → WS
API Rate Limiting 壓力測試
SQL Injection 防護 必要 使用 ORM + Prepared Statement
XSS 防護 必要 手動測試 + 自動掃描
CSRF Token 必要 檢查所有 POST 表單

建議每季跑一次 OWASP ZAP 掃描,它是免費的,能抓出大部分常見漏洞。如果預算允許,每年做一次第三方滲透測試更好。

拍賣網站的安全跟網站架設的基礎建設息息相關,從一開始就把資安考慮進去,比事後補洞省時省力太多了。

FAQ

Q:Let's Encrypt 免費的 SSL 安全嗎?跟付費憑證有差嗎?

加密強度完全一樣,都是 2048-bit RSA 或 ECDSA。差別在於驗證等級——Let's Encrypt 只做 DV 驗證,不會顯示公司名稱。對中小型拍賣平台來說完全夠用,很多大型網站也在用。唯一要注意的是 90 天要續期一次,務必設定自動續期(Certbot 預設就會幫你做)。

Q:拍賣網站需要符合 PCI DSS 嗎?

如果你自己處理信用卡資訊,是的。但如果你用第三方金流(綠界、藍新、TapPay),卡號不經過你的伺服器,那 PCI DSS 的合規要求會大幅降低。這也是為什麼強烈建議拍賣平台不要自己存信用卡資訊——交給專業的金流商處理,你省事、買家也安心。關於金流串接的細節,可以看拍賣金流整合指南

Q:被 DDoS 攻擊怎麼辦?

拍賣網站特別容易在高流量時段(如限時拍賣結標前)被盯上。建議在前面擋一層 Cloudflare(免費方案就有基本 DDoS 防護),再配上 Rate Limiting 跟 IP 黑名單。如果是 Laravel 專案,可以善用 throttle middleware 來限制請求頻率。

相關文章

拍賣付款方式全攻略:哪種最安全最划算

匯錯帳號、被詐騙私下轉帳、刷卡被收高額手續費——付款方式選錯,得標的喜悅馬上變成噩夢。五種常見付款方式的安全性和手續費,一次講清楚。

· 8 分鐘 · 5 次閱讀
閱讀 →

拍賣保證金是什麼:為什麼要付、怎麼退、注意事項

很多拍賣平台要求繳納保證金才能出價,搞懂保證金的用途、退還規則和注意事項,避免白白損失。

· 7 分鐘 · 9 次閱讀
閱讀 →

拍賣網站的無障礙設計:讓所有人都能參與競標

拍賣網站的無障礙設計不只是法規要求,更是擴大用戶群的商業策略

· 11 分鐘 · 11 次閱讀
閱讀 →