node-npm安全性插件helmet(防护包含点击劫持、xss、嗅探攻击...)
来源:互联网 发布:星期四数码靠谱吗淘宝 编辑:程序博客网 时间:2024/06/08 06:44
## helmet.js
基于node-express的一款安全防护中间件,可以通过设置各种HTTP标题来帮助您保护您的Express应用程序。
一、安装
首先运行
npm install helmet --save
引用
var express = require('express')var helmet = require('helmet')var app = express()//使用helmet全部功能app.use(helmet())//单独使用某一功能app.use(helmet.noCache())
二、作用
三、CSP策略
内容安全策略CSP(Content-Security-Policy)
,对于这个设置,可以帮助防止JavaScript
,CSS
,插件等方式的恶意注入。
大多数现代浏览器都支持一个标题Content-Security-Policy
,这个标题实际上是允许在你的页面上的白名单。您可以将JavaScript
,CSS
,图像,插件等等列入白名单。
假设你有一个网站没有链接到外部资源,只是链接你自己的东西。你可以设置一个标题,如下所示:
Content-Security-Policy: default-src 'self'
这有效地告诉浏览器“只加载来自我自己的域的东西”。如果您正在运行example.com并且用户试图加载https://example.com/my-javascript.js
,那么它将会正常运行。但是,如果用户尝试加载http://evil.com/evil.js
,它将不会加载!
使用helmet增强CSP的安全性配置
// 首先确保你运行过 "npm install helmet-csp" 来获取csp的包// 引入基于helmet的csp包var csp = require('helmet-csp')//各类资源文件的白名单配置app.use(csp({ directives: { defaultSrc: ["'self'", 'default.com'], styleSrc: ["'self'", 'maxcdn.bootstrapcdn.com'], imgSrc: ['img.com', 'data:'], sandbox: ['allow-forms', 'allow-scripts'], reportUri: '/report-violation', objectSrc: [], // An empty array allows nothing through }})
更多配置
四、点击劫持(Clickjacking)
说到点击劫持首先应该清楚HTML的<iframe>
标签,使用这个标签可以有效地嵌入另一个HTML页面到当前页面。
Clickjacked页面通过点击隐藏的链接来欺骗用户进行不期望的操作。在一个骇人听闻的页面上,攻击者在透明层中加载另一个页面。用户认为他们正在点击可见按钮,而他们实际上是在隐藏/不可见页面上执行操作。比如我们访问的页面被内嵌到与窗口大小相同的透明的页面中,我们在输入完用户名和密码后点击登录按钮时,你的账户和密码就会被记录。
最简单解决方案当然是禁用iframe这个不安全的标签,如果一定要使用也请做好X-Frame选项头的配置。禁止浏览器在<frame>
或<iframe>
中呈现页面,网站可以通过确保其内容不被嵌入到其他站点中,从而避免出现Clickjacking攻击。为包含HTML内容的所有响应设置X-Frame-Options标题。
使用helmet
// 禁止任何iframe嵌套// 设置 "X-Frame-Options: DENY".app.use(frameguard({ action: 'deny' }))// 仅仅允许发生同源的iframe嵌套// Sets "X-Frame-Options: SAMEORIGIN".app.use(frameguard({ action: 'sameorigin' }))app.use(frameguard()) // defaults to sameorigin// 允许一个的主机地址// 设置 "X-Frame-Options: ALLOW-FROM http://example.com".app.use(frameguard({ action: 'allow-from', domain: 'http://example.com'}))
helmet对于安全性的一共12种防范,在这里就不一一列举,翻墙链接。
END
- node-npm安全性插件helmet(防护包含点击劫持、xss、嗅探攻击...)
- Xss攻击与防护
- XSS学习笔记(一)-点击劫持
- XSS学习笔记(一)-点击劫持
- sql 注入防护与xss攻击防护
- xss攻击--SESSION劫持方式以及解决方案
- 浅析点击劫持攻击(转载)
- xss(cookie劫持)
- 跨站点脚本攻击(XSS)防护 XSS HTMLFilter
- PHP表单安全性及XSS攻击
- cendos 安装node,包含npm
- 了解:XSS跨站脚本攻击原理及常用的防护方法(转载)
- 跨站脚本攻击(Cross-site scripting,通常简称为XSS)阿里云防护
- XSS跨站脚本攻击原理及防护方法
- XSS跨站脚本攻击原理及防护方法
- XSS跨站脚本攻击原理及防护方法
- 浅解点击劫持与注入攻击
- XSS攻击(二)
- 2017年暑假第二周 回家
- 杭电acm—2135 Rolling table
- DES原理分析
- 如何進入“強制禁止驅動簽章”模式
- Linux在启动时出现Intel VT-x被禁用的问题
- node-npm安全性插件helmet(防护包含点击劫持、xss、嗅探攻击...)
- bzoj 3680 吊打xxx 模拟退火
- 01背包问题以及网易考题
- poj 2481 Cows (树状数组)
- 3767: A+B Problem加强版
- JDBC基础操作
- 网络的概念
- uboot移植2
- 2016年湖南省第十二届大学生计算机程序设计竞赛