成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我在登錄功能埋的坑:HTTP重定向攻擊差點讓公司背鍋(附解決方案)

安全 應用安全
上周我在公司捅了個簍子——自己寫的登錄模塊差點成了釣魚網站的幫兇。今天就跟大家嘮嘮這個驚險過程,以及怎么避免HTTP重定向攻擊這個"隱形炸彈"。

上周我在公司捅了個簍子——自己寫的登錄模塊差點成了釣魚網站的幫兇。今天就跟大家嘮嘮這個驚險過程,以及怎么避免HTTP重定向攻擊這個"隱形炸彈"。

一、那個讓測試妹子暴走的早晨

事情發生在某個陽光明媚的周一,測試組的小美突然沖進我們開發組:"你們的登錄接口被劫持了!用戶點完登錄直接跳轉到賭博網站!"

我當時的反應:"絕對不可能!我明明做了URL白名單驗證..."

1.1 問題重現:用戶登錄變賭博

我們復現了問題場景:

  1. 用戶訪問 www.our-app.com/login?redirect=/profile
  2. 輸入正確賬號密碼
  3. 頁面跳轉到...澳門首家線上賭場(!)

我盯著瀏覽器的Network面板,發現請求里赫然有個302狀態碼:

HTTP/1.1 302 Found
Location: https://malicious-site.com?steal_cookie=123abc

關鍵問題解析:起初我們以為用戶訪問的是正常路徑/profile,但實際攻擊發生時,redirect參數是經過精心偽裝的:

圖片圖片

攻擊者如何操作?

  1. 構造釣魚鏈接:www.our-app.com/login?redirect=%2F%2Fmalicious-site.com(%2F是"/"的URL編碼)
  2. 服務器收到參數后:
// 未解碼直接拼接
String redirect = request.getParameter("redirect"); // 得到"http://malicious-site.com"
response.sendRedirect("https://our-app.com" + redirect);

實際跳轉地址變成:https://our-app.com//malicious-site.com瀏覽器自動解析為:https://malicious-site.com

為什么測試時沒發現?

我們在測試環境用的都是類似/profile的簡單路徑,完全沒料到這些騷操作:

  • //外部網站 的路徑拼接攻擊
  • @惡意域名 的特殊解析
  • %編碼 的繞過手法

二、解剖這只"重定向蟑螂"

2.1 重定向的工作原理

圖片圖片

就像快遞員送錯包裹:

  1. 用戶說:"送完這個去A地址"(帶redirect參數)
  2. 服務器說:"好的,下個包裹送到B地址"(返回302+Location)
  3. 快遞員(瀏覽器)無腦照做

2.2 漏洞代碼長啥樣?

這是我最初寫的危險代碼(Java示例):

// 危險示范!請勿模仿!
String redirectUrl = request.getParameter("redirect");
response.sendRedirect(redirectUrl);

三、我是怎么填坑的

3.1 第一層防護:白名單驗證

List<String> allowedPaths = Arrays.asList("/profile", "/dashboard");

if(!allowedPaths.contains(redirectParam)){
    redirectParam = "/default"; // 跳轉到安全頁面
}

3.2 第二層防護:簽名校驗

給redirect參數加"防偽碼":

# 生成簽名
sign = hashlib.sha256(redirect_path + SECRET_KEY).hexdigest()
safe_url = f"{redirect_path}?sign={sign}"

# 驗證時
client_sign = request.GET.get('sign')
server_sign = hashlib.sha256(redirect_path + SECRET_KEY).hexdigest()
if client_sign != server_sign:
    abort(403)

3.3 第三層防護:相對路徑轉換

把絕對URL變成相對路徑:

// 把 https://www.our-app.com/profile 轉為 /profile
function sanitizeRedirect(url) {
    return new URL(url).pathname;
}

四、預防重定向攻擊的五個要點

  1. 絕不信任客戶端傳參:把redirect參數當嫌疑人審
  2. 禁用開放重定向:就像不給陌生人留家門鑰匙
  3. 設置跳轉延遲:重要操作前加二次確認
  4. 記錄可疑日志:給異常跳轉裝監控
  5. 定期安全掃描:用自動化工具查漏

五、血淚教訓總結

這次事故讓我明白:安全不是功能,而是底線。現在每次處理重定向時,我都會默念三遍:

"用戶傳參猛于虎,未經驗證就是賭,白名單加簽名鎖,安全紅線不能觸。"

最后送大家一個自查清單:

? [ ] 所有redirect參數是否強制校驗?

? [ ] 是否存在裸跳轉(直接拼接URL)?

? [ ] 是否配置了CSP安全策略?

? [ ] 是否禁用非必要的HTTP方法?

? [ ] 是否定期進行滲透測試?

責任編輯:武曉燕 來源: 草捏子
相關推薦

2021-01-18 06:21:18

登錄SSO接口

2020-12-09 11:00:44

Nginx 運維Tomcat

2018-12-03 12:04:10

Kyligence解決方案

2011-03-07 14:29:18

2022-04-06 10:36:24

技術管理

2019-12-03 13:57:38

CIO背鍋IT

2020-10-21 11:20:42

MySQL數據庫Bug

2020-01-07 08:00:52

ApacheHTTPHTTPS

2020-11-12 07:46:34

HTTP

2024-06-24 00:30:00

2021-10-18 07:58:33

MyBatis Plu數據庫批量插入

2010-12-14 15:07:15

ICMP路由重定向

2019-09-16 17:08:12

運維AIOpsIT運營

2011-10-25 11:40:54

打印機常見問題

2015-03-03 10:47:06

視頻監控解決方案昆騰公司

2024-06-13 12:44:49

2018-12-26 17:36:37

開發者技能阿里

2021-12-14 11:53:26

微軟谷歌OAuth漏洞

2017-09-25 10:52:27

2024-08-05 08:00:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲第一av网站 | 欧美一区不卡 | 久久大香| 国产激情精品 | 一区二区视屏 | 黑人精品欧美一区二区蜜桃 | 亚洲精品久久久久久一区二区 | 国产永久免费 | 亚洲91精品 | 欧美一级片在线 | 亚洲成人免费 | www国产成人| 91九色在线观看 | 免费黄色的视频 | 黄色国产大片 | 久久精品国产一区二区电影 | 国产一级在线视频 | 国产欧美一区二区三区久久人妖 | 成人影院午夜 | av在线黄| 黄网站涩免费蜜桃网站 | 久久久久久国产 | 毛片一区二区三区 | 国产精品欧美一区二区三区 | 欧美精品一二三 | 天天操夜夜操 | 国产999精品久久久影片官网 | 国产露脸对白88av | 国产精品不卡一区 | 美女一区二区在线观看 | 精品一区二区三区在线观看国产 | 国产免费观看视频 | 欧美www在线观看 | 天天操伊人 | 婷婷激情在线 | 激情免费视频 | 亚洲视频在线观看 | 精品国产乱码久久久久久影片 | 久久激情视频 | 亚洲视频第一页 | 欧美一区二区在线看 |