2007 年 Monster.com 遭定制木馬盜取內網資訊。雖罕見,但證明客戶端主機安全同樣關鍵。日常最大威脅仍是 XSS 與 CSRF。
管理介面/內網任一輸出點未消毒 → 全系統淪陷:
對策參考「注入攻擊」章節,推薦 SafeErb 插件強制輸出轉義。
攻擊者可執行管理員所有權限操作:
對策參考「CSRF」章節:protect_from_forgery、正確使用 GET/POST。
request.remote_ip 檢查(非絕對,代理可繞過)admin.app.com 獨立域 → 同源策略阻擋主站 XSS 竊取管理 CookieModel.new(params[:model]) 允許攻擊者設定任意資料庫欄位:
def signup
params[:user] # => {:name => "ow3ned", :admin => true}
@user = User.new(params[:user])
end
# 攻擊 URL: /user/signup?user[name]=ow3ned&user[admin]=1
# 結果:惡意用戶成為管理員
attr_accessible# 黑名單(不推薦:新增欄位易忘記保護)
attr_protected :admin
# 白名單(推薦:預設拒絕,明確允許)
attr_accessible :name
# 驗證
@user = User.new(params[:user]) # admin 不會被賦值
@user.admin # => false
@user.admin = true # 必須顯式指定
@user.admin # => true
核心原則:白名單優於黑名單,新增欄位自動受保護,不會因疏忽暴露敏感屬性。