加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

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

发布时间:2018-10-20 06:30:44 所属栏目:业界 来源:lucywang
导读:什么是不安全的重定向? 对于任何web开发人员来说,不安全或未经验证的重定向都是重要的安全考虑因素。Express为重定向提供了本地支持,使它们易于实现和使用。然而,Express将执行输入验证的工作留给了开发人员。Express是一种保持最低程度规模的灵活Node.

在某些情况下,将每个组合列入白名单是不切实际的,不过有些安全平台仍然希望重定向用户并将其保留在域内某些边界内。当外部提供的值遵循特定模式(例如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。

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

注:本文是以Hailstone为例进行讲解的,Hailstone是一个应用程序安全平台,它有查找代码中的漏洞功能。

【编辑推荐】

  1. 网络安全威胁信息格式规范正式发布
  2. 企业被“勒索”遭殃,企业数据安全路在何方
  3. 5G规范安全性和协议漏洞分析(上篇)
  4. 走进几维安全,听CTO刘柏江讲述他们想做的事儿
  5. 【安全预警】大量恐吓勒索垃圾邮件来袭
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读