日常比喻:网站面临的两种入侵风险
可将网站想像成住家大门,存在两种常见破坏方式。一种是复制钥匙直接进入屋内搜刮(XSS),另一种则是冒充屋主指示更换门锁(CSRF)。这两类手法长期位居 OWASP 风险排行前列,缺乏防护等同敞开大门。
先前曾有制造业客户因 XSS 导致管理权限外洩,首页遭置换为不当广告,搜寻排名因此消失,歷时数月才恢復正常。掌握基本资安概念是网站经营者的必要课题。
XSS 跨站脚本攻击详解
XSS 指攻击者将恶意 JavaScript 植入页面,使用者浏览时即会执行该程式码,进而窃取 Cookie 或 Session 资讯。主要分为三类:
- 反射型:恶意参数藏于网址,伺服器直接回传。
- 储存型:恶意码永久存于资料库,所有访客皆受影响。
- DOM 型:纯前端操作 DOM,伺服器较难侦测。
CSRF 跨站请求伪造说明
CSRF 利用已登入状态,让浏览器自动附带 Cookie,向目标发送未经同意的请求。例如在已登入银行页面时,另一恶意页面暗中送出转帐指令,伺服器误判为本人操作。
XSS 防护要点
输出编码
输出使用者内容前将特殊字元转为 HTML 实体,是最基础的保护。现代模板引擎预设即执行此编码。
内容安全政策
CSP 标头可限制脚本来源,避免非白名单程式码执行,切勿启用 unsafe-inline 与 unsafe-eval。
输入验证与清理
采用白名单验证所有输入;如需富文本,则使用经过审核的清理工具。
Cookie 安全设定
启用 HttpOnly 与 Secure 旗标,防止 JavaScript 读取 Session。
CSRF 防护要点
Token 机制
表单内嵌入随机 Token,提交时验证一致性即可阻挡伪造请求。
SameSite 属性
设定 Lax 或 Strict 可限制跨站携带 Cookie。
来源标头检查
验证 Referer 与 Origin 作为额外防线。
框架内建保护
主流框架已提供自动编码、Token 管理及 Cookie 安全设定,开发者仍需避免使用未编码输出,並确保 API 端点也有妥善保护。
定期检核项目
XSS 检查:输出编码、CSP 设定、Cookie 旗标、富文本清理、前端避免直接插入原始内容。CSRF 检查:表单含 Token、AJAX 传送 Token、Cookie SameSite、重要操作额外确认。
结语:资安需持续投入
XSS 破坏使用者对网站的信任,CSRF 则破坏伺服器对已验证使用者的信任。善用框架机制並补强不足处,才能建立稳固防线。安全性应于设计初期即纳入考量。