国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何防御Node.js中的不安全跳轉

安全 應用安全
對于任何web開發人員來說,不安全或未經驗證的重定向都是重要的安全考慮因素。Express為重定向提供了本地支持,使它們易于實現和使用。

什么是不安全的重定向?

對于任何web開發人員來說,不安全或未經驗證的重定向都是重要的安全考慮因素。Express為重定向提供了本地支持,使它們易于實現和使用。然而,Express將執行輸入驗證的工作留給了開發人員。Express是一種保持最低程度規模的靈活Node.js Web應用程序框架,為Web和移動應用程序提供一組強大的功能。

下面是OWASP.org網站給出的“未經驗證的重定向和轉發”的定義:

如果web應用程序接受不可信的輸入,可能導致web應用程序將請求重定向到不可信輸入中包含的URL,則可以進行未經驗證的重定向和轉發。

重定向通常在登錄和身份驗證過程中使用,因此可以在登錄之前將用戶重定向到他們所在的頁面。但根據業務需求或應用程序類型而有所不同,也存在其他重定向情況。

[[246704]]

為什么要避免重定向?

不驗證用戶輸入的重定向,可以使攻擊者具備發起網絡釣魚詐騙的條件,從而竊取用戶憑據并執行其他惡意操作。

注意:當在Node.js或Express中實現重定向時,在服務器端執行輸入驗證很重要。

如果攻擊者發現用戶沒有驗證外部用戶提供的輸入,他們可能會利用這個漏洞在論壇、社交媒體和其他公共場所發布專門設計的鏈接,讓用戶點擊它。

從表面上看,這些URL看起來合法且對用戶來說并無威脅,這是因為所有這些要重定向的URL都包含目標的主機名:

https://example.com/login?url=http://examp1e.com/bad/things

但是,如果服務器端重定向邏輯未驗證輸入url參數的數據,則用戶可能最終會訪問黑客所提前設置的網站(examp1e.com),滿足攻擊的需求!以上只是攻擊者如何利用不安全重定向邏輯的一個例子。

不安全重定向例子并將其直接傳遞到Express res.redirect()方法中。因此,只要用戶通過身份驗證,Express就會將用戶重定向到輸入或提供的URL。

  1. var express = require('express'); 
  2. var port = process.env.PORT || 3000; 
  3. var app = express(); 
  4.  
  5. app.get('/login', function (req, res, next) { 
  6.  
  7.     if(req.session.isAuthenticated()) { 
  8.  
  9.         res.redirect(req.query.url); 
  10.     } 
  11. });  
  12.  
  13. app.get('/account', function (req, res, next) { 
  14.     res.send('Account page'); 
  15. }); 
  16.  
  17. app.get('/profile', function (req, res, next) { 
  18.     res.send('Profile page'); 
  19. }); 
  20.  
  21. app.listen(port, function() { 
  22.     console.log('Server listening on port ' + port); 
  23. }); 

輸入驗證有助于防止不安全的重定向

通常,最好避免在代碼中使用重定向和轉發。如果你一定需要在代碼中使用重定向,則首選的方法是使用映射到特定目標的預定義輸入,這被稱為白名單方法。以下就是實現這種方法的一個具體樣本步驟:

  • baseHostname會確保任何重定向都將用戶保留在研究人員的主機上;
  • redirectMapping是一個對象,它將預定義的輸入(例如,傳遞給url paramer的內容)映射到服務器上的特定路徑;
  • validateRedirect()方法會判斷預定義的輸入是否存在,如果它們存在,則返回要重定向的適當路徑;
  • 研究人員修改了/login邏輯,然后將baseHostname+redirectPath變量連接在一起,這就避免了任何用戶提供的輸入內容直接傳遞到Express res.redirect()方法中;
  • 最后,研究人員使用encodeURI()方法作為額外的安全保證,確保連接字符串的URI部分被正確編碼,以允許干凈的重定向。
  1. //Configure your whitelist 
  2. var baseHostname = "https://example.com"
  3. var redirectMapping = { 
  4.     'account': '/account', 
  5.     'profile': '/profile' 
  6.  
  7. //Create a function to validate whitelist 
  8. function validateRedirect(key) { 
  9.     if(key in redirectMapping) { 
  10.  
  11.         return redirectMapping[key]; 
  12.     }else{ 
  13.  
  14.         return false; 
  15.     } 
  16.  
  17. app.get('/login', function (req, res, next) { 
  18.     if(req.session.isAuthenticated()) { 
  19.         redirectPath = validateRedirect(req.query.url); 
  20.  
  21.         if(redirectPath) { 
  22.             res.redirect(encodeURI(baseHostname + redirectPath)); 
  23.         }else{ 
  24.             res.send('Not a valid redirect!'); 
  25.         } 
  26.     } 
  27. }); 

其他重定向場景

在某些情況下,將每個組合列入白名單是不切實際的,不過有些安全平臺仍然希望重定向用戶并將其保留在域內某些邊界內。當外部提供的值遵循特定模式(例如16個字符的字母數字字符串)時,最好這樣做。字母數字字符串是理想的,因為它們不包含任何可能引入其他攻擊的特殊字符,例如目錄/路徑遍歷(依賴于諸如...和向后/向前斜杠之類的字符)。

例如,安全平臺可能希望在用戶登錄后將其重定向回電子商務網站上的特定產品。由于電子商務網站對每種產品都有唯一的字母數字值,因此安全平臺可以通過始終根據RegEx白名單驗證外部輸入來實現安全重定向。在本文所講的樣本在,研究者用的是productId變量。

  1. //Configure your whitelist 
  2. var baseHostname = "https://example.com"
  3.  
  4. app.get('/login', function (req, res, next) { 
  5.     productId = (req.query.productId || ''); 
  6.     whitelistRegEx = /^[a-zA-Z0-9]{16}$/; 
  7.  
  8.     if(productId) { 
  9.          
  10.         //Validate the productId is alphanumeric and exactly 16 characters 
  11.         if(whitelistRegEx.test(productId)) { 
  12.  
  13.             res.redirect(encodeURI(baseHostname + '/item/' + productId)); 
  14.         }else{ 
  15.  
  16.             //The productId did not meet the RegEx whitelist, so return an error 
  17.             res.send('Invalid product ID'); 
  18.         } 
  19.     }else{ 
  20.      
  21.         //No productId was provided, so redirect to home page 
  22.         res.redirect('/'); 
  23.     } 
  24. }); 

最后,安全平臺發出警告,警告用戶他們正在被自動重定向是值得重視的。如果安全平臺有意將用戶重定向到域外,則可能需要在流程中創建一個中間頁面,該頁面會發出如下警告,并包含用戶要重定向到的URL。

注:本文是以Hailstone為例進行講解的,Hailstone是一個應用程序安全平臺,它有查找代碼中的漏洞功能。

責任編輯:趙寧寧 來源: 嘶吼網
相關推薦

2015-07-01 14:48:51

2021-02-01 15:42:45

Node.jsSQL應用程序

2011-09-09 14:23:13

Node.js

2020-01-03 16:04:10

Node.js內存泄漏

2023-06-01 19:24:16

2021-08-20 09:00:00

Node.js開發API

2019-12-17 14:20:57

物聯網安全物聯網IOT

2023-01-31 16:43:31

?Node.js事件循環

2012-04-16 10:12:54

Java線程

2021-10-25 09:46:37

代碼攻擊Node.js

2021-05-27 09:00:00

Node.js開發線程

2022-09-04 15:54:10

Node.jsAPI技巧

2016-08-11 14:02:02

NodeJS前端

2024-01-05 08:49:15

Node.js異步編程

2021-05-21 09:36:42

開發技能代碼

2020-04-15 15:48:03

Node.jsstream前端

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2021-04-04 23:16:52

安全刷臉銀行

2020-04-22 20:35:02

HashMap線程安全

2020-11-03 12:32:25

影子物聯網物聯網IOT
點贊
收藏

51CTO技術棧公眾號

91精品国产91热久久久做人人| 国产日产亚洲精品| 免费网站www在线观看| 羞羞答答成人影院www| 国产亚洲视频在线观看| 黄视频在线播放| 国产亚洲一区二区三区四区| 欧洲av一区| 综合久久婷婷| 欧美一区二区色| 欧美xx视频| 欧美在线观看你懂的| 搡女人真爽免费午夜网站| 青娱乐精品视频在线| 国产精品午夜视频| 亚洲2区在线| 亚洲一区www| 羞羞的视频在线看| 在线精品视频一区二区三四| 369你懂的电影天堂| 99这里只有久久精品视频| 四虎一区二区| 99国产精品私拍| 亚洲自拍偷拍色图| 日韩精品一区二区三区免费观看| 九九精品在线播放| 日韩三级一区| 亚洲男人天堂网| 福利写真视频网站在线| 欧美天堂一区二区三区| 黄色小视频在线播放| 亚洲欧美另类久久久精品| 草草草在线视频| 91啪亚洲精品| ww国产内射精品后入国产| 成人性生交大片免费看中文| 国产树林野战在线播放| 久久激五月天综合精品| 久久久久久a亚洲欧洲aⅴ| 狠狠噜噜久久| 岛国一区二区三区高清视频| 91视频综合| 91麻豆国产精品| 久久精品国产亚洲夜色av网站| 国外视频精品毛片| 视频一区在线| 国产+人+亚洲| 日本精品影院| 国产精品96久久久久久又黄又硬| 久久av免费| 成人高清视频观看www| 欧美肉体xxxx裸体137大胆| 国产99久久精品一区二区 夜夜躁日日躁 | 亚洲欧美精品伊人久久| 国精产品一区一区三区mba下载| 91精品欧美综合在线观看最新| 免费黄色电影在线观看| 日韩精品中午字幕| 快播电影网址老女人久久| 久久久成人精品视频| 久久资源综合| 国产精品三级美女白浆呻吟 | 欧美电影免费网站| 国产精品久久二区| 99久久这里只有精品| 国产精品中出一区二区三区| 日韩av在线播放中文字幕| 久久久天堂国产精品| 国产欧美一区二区精品秋霞影院 | 色偷偷久久人人79超碰人人澡 | 国产人成一区二区三区影院| 国模私拍视频| 欧美色网站导航| gay欧美网站| 欧美xxxx14xxxxx性爽| re久久精品视频| 日本成人三级| 99久久精品免费看国产免费软件| 九色中文视频| 欧美成人精品福利| 亚洲国产视频二区| 97av影视网在线观看| 久久se精品一区二区| www成人免费观看网站| 欧美顶级少妇做爰| 日韩第二十一页| 147欧美人体大胆444| 国产成人精品三级| 中文字幕欧美一区二区| 精品国产123| 亚洲黄色录像| 亚洲日本理论电影| 亚洲激情一二三区| 免费h视频在线观看| 国产精品视频免费在线| 美国毛片一区二区| 超碰在线公开免费| 原创国产精品91| 91久久电影| 国产精品视频一区二区三区四区五区 | 国产午夜精品久久久| 免费精品国产的网站免费观看| 茄子视频成人在线观看| 亚洲三级免费观看| 亚洲淫成人影院| 国产精品免费视频久久久| 国产白丝网站精品污在线入口| 中文字幕在线影院| 最近2019年日本中文免费字幕| 亚洲自拍偷拍网| 国产午夜伦鲁鲁| 日韩午夜在线影院| 欧美成人精品一区二区三区在线看| 中文字幕免费高| 欧美亚洲国产怡红院影院| 98视频精品全部国产| 一本一道久久久a久久久精品91| 亚洲一二三区视频在线观看| 三级成人在线| 久久久精品动漫| 亚洲成a人片在线观看中文| 久久精品黄色| 亚洲成人网上| 在线观看国产一区二区| 希岛爱理av免费一区二区| 免费看黄在线看| 精品日韩一区二区| 亚洲欧美一区在线| av一级二级| 欧美激情2020午夜免费观看| 蓝色福利精品导航| 91精品专区| 亚洲最大的成人网| 亚洲电影一区二区| 亚洲精品进入| 拍拍拍999自拍偷| 色婷婷综合成人av| 激情国产一区二区| 欧洲中文在线| 蜜桃视频在线观看91| 欧美在线不卡一区| 亚洲激情中文在线| 老司机色在线视频| 国产精品久久久久久久久久久久久| 久久精品男人天堂av| 91精品一区| 欧美啪啪免费视频| 色偷偷av亚洲男人的天堂| 国产精品一区二区久久精品爱涩| 国模私拍视频在线播放| 日韩精品伦理第一区| 日韩一卡二卡三卡四卡| 快she精品国产999| 国产啊啊啊视频在线观看| 日韩精彩视频| 亚洲国产成人精品女人久久久| 日韩黄色免费电影| 色老头在线观看| 中文字幕一区二区三区乱码| 亚洲国产高潮在线观看| 久久精品国产精品青草| 老司机成人影院| 欧美日韩在线视频一区二区三区| 欧美成人免费全部观看天天性色| 国产网站一区二区| 国内精品久久久久久99蜜桃| 中文字幕乱在线伦视频乱在线伦视频| 国产一区二区香蕉| 欧美日韩国产精选| 蜜臀av国产精品久久久久| 毛片电影在线| 亚洲午夜无码av毛片久久| 色综合视频网站| 亚洲欧美另类图片小说| 亚洲最新色图| av网站导航在线观看免费| 亚洲一区二区三区加勒比| 亚洲人成电影网| 国产午夜精品美女毛片视频| 偷拍亚洲精品| 免费毛片在线| 欧美日本韩国国产| 亚洲午夜国产成人av电影男同| 99久久精品国产毛片| 免费成人蒂法| 国模吧精品人体gogo| 亚洲bbw性色大片| 久久久精品999| 亚洲国产视频一区二区| 亚洲精品人人| 成人做爰免费视频免费看| 91国内视频| 久久涩涩网站| 日韩中文娱乐网| 亚洲成人www| 久久精品国产成人一区二区三区| 国产在线视频欧美一区| 亚洲精品一区视频| 午夜啪啪福利视频| 国产99久久精品一区二区 夜夜躁日日躁 |