首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Rails 安全指南(四):企業內網與管理介面安全、大量賦值漏洞

     編輯:Java 相關知識

第 5 章:內網與管理介面 —— 高價值攻擊目標

2007 年 Monster.com 遭定制木馬盜取內網資訊。雖罕見,但證明客戶端主機安全同樣關鍵。日常最大威脅仍是 XSS 與 CSRF。

5.1 XSS 風險放大

管理介面/內網任一輸出點未消毒 → 全系統淪陷:

  • 竊取管理員 Cookie(Session 劫持)
  • IFrame 注入(Monster.com 案例)
  • 鍵盤記錄/瀏覽器漏洞植入惡意軟體 → 全控管理員電腦

對策參考「注入攻擊」章節,推薦 SafeErb 插件強制輸出轉義。

5.2 CSRF 風險放大

攻擊者可執行管理員所有權限操作:

  • 路由器 DNS 劫持:墨西哥案例,郵件含 CSRF 圖片標籤重設路由器 DNS,導向釣魚銀行站
  • Google AdSense 帳號接管:修改 Email/密碼
  • 部落格/論壇垃圾發文:批量猜測管理介面 URL 結構(Rails RESTful 路徑可預測)

對策參考「CSRF」章節:protect_from_forgery、正確使用 GET/POST。

5.3 額外防護建議

  • 角色權限最小化:管理介面專用帳號,關鍵操作二次驗證密碼
  • IP 白名單限制:request.remote_ip 檢查(非絕對,代理可繞過)
  • 子域隔離:admin.app.com 獨立域 → 同源策略阻擋主站 XSS 竊取管理 Cookie

第 6 章:大量賦值 —— Rails 特有風險

Model.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
# 結果:惡意用戶成為管理員

6.1 對策:白名單 attr_accessible

# 黑名單(不推薦:新增欄位易忘記保護)
attr_protected :admin

# 白名單(推薦:預設拒絕,明確允許)
attr_accessible :name

# 驗證
@user = User.new(params[:user])  # admin 不會被賦值
@user.admin  # => false
@user.admin = true  # 必須顯式指定
@user.admin  # => true

核心原則:白名單優於黑名單,新增欄位自動受保護,不會因疏忽暴露敏感屬性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved