前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用NodeSecurityShield保障NodeJS应用程序安全

如何使用NodeSecurityShield保障NodeJS应用程序安全

作者头像
FB客服
发布2023-03-30 19:45:08
5320
发布2023-03-30 19:45:08
举报
文章被收录于专栏:FreeBufFreeBuf

 关于NodeSecurityShield 

NodeSecurityShield简称为NSS,是一款对开发人员和安全工程师十分友好的安全工具,该工具旨在帮助广大开发人员更好地保护NodeJS应用程序的安全。

该工具受到了log4J漏洞(CVE-2021-44228)的启发,一旦应用程序可以进行任意网络调用,那么攻击者就有可能利用该漏洞来实施入侵攻击。因此,我们认为有必要让应用程序声明它可以拥有哪些权限,以便增加这些漏洞的利用难度。为了实现这个目标,NodeSecurityShield实现了自己的资源访问策略。

 功能介绍 

攻击监控:带外网络调用 攻击屏蔽:带外网络调用

  资源访问策略(RAP)

该工具所实现的资源访问策略类似于内容安全策略(CSP)。

NodeSecurityShield将允许开发人员/安全工程师声明应用程序应该访问哪些资源,NodeSecurityShield也将强制执行其资源访问策略(RAP)。

 工具安装 

该工具主要针对的是NodeJS应用程序,因此我们首先要在本地设备上安装并配置好NodeJS环境。接下来,使用npm命令直接下载和安装NodeSecurityShield即可:

代码语言:javascript
复制
npm install nodesecurityshield

 工具使用 

代码语言:javascript
复制
// 使用require引入'nodesecurityshield'
let nodeSecurityShield = require('nodesecurityshield');


// 启用攻击监控或屏蔽功能
nodeSecurityShield.enableAttackMonitoring(resourceAccessPolicy ,callbackFunction);

 资源访问策略(RAP)样例 

代码语言:javascript
复制
const resourceAccessPolicy  = {
  "outBoundRequest" : {
          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],
          "allowedDomains" : ["*.domdog.io"]
      }
};

注意,blockedDomains的优先级高于allowedDomains,比如说,工具首先会根据blockedDomains检查请求,然后再根据allowedDomains检查请求。

callbackFunction样例(攻击屏蔽)

代码语言:javascript
复制
var callbackFunction = function (violationEvent) {
    throw new Error("Request Blocked. It violates declared Resource Access Policy.")
}

violationEvent样例

代码语言:javascript
复制
{
 "violationtType": "Outbound Request",
 "message": "Outbound request to 'www.malicious.com' violates declared 'Resource Access Policy (RAP)'.",
 "policy": {
  "outBoundRequest" : {
          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],
          "allowedDomains" : ["*.domdog.io"]
      }
}

 结合Sentry使用 

结合Sentry的resourceAccessPolicyto样例

代码语言:javascript
复制
const resourceAccessPolicy  = {
  "reportUriHosts" : ["ingest.sentry.io"],
  "outBoundRequest" : {
          "blockedDomains" : ["*.123.com", "stats.abc.com", 'xyz.com'],
          "allowedDomains" : ["*.domdog.io"]
      }
};

结合Sentry的callbackFunction样例

代码语言:javascript
复制
var callbackFunction = function (violationEvent) {


  var e = new Error();
  e.name = 'Resource Access Policy Violation';
  e.message = JSON.stringify(violationEvent);
  Sentry.captureException(e);


}

许可证协议

该项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

https://github.com/DomdogSec/NodeSecurityShield

参考资料

https://nvd.nist.gov/vuln/detail/CVE-2021-44228

https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

https://sentry.io/

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于NodeSecurityShield 
  •  功能介绍 
  •   资源访问策略(RAP)
  •  工具安装 
  •  工具使用 
  •  资源访问策略(RAP)样例 
  • callbackFunction样例(攻击屏蔽)
  • violationEvent样例
  •  结合Sentry使用 
    • 结合Sentry的resourceAccessPolicyto样例
      • 结合Sentry的callbackFunction样例
      • 许可证协议
      • 项目地址
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档