如何模拟 csrf攻击原理以及nodejscsrf防御token生成

必须谨记!Node.js安全开发技巧
发表于 16:43|
来源CODESHIP|
作者Gergely Nemeth
摘要:毫无疑问,Node.js已经变的愈加成熟,尽管这样,开发者仍然缺乏大量的安全指南。本文将分享一些有关Node.js安全要点给大家,希望大家能够谨记于心。
【编者按】互联网安全事件层出不穷,用户每时每刻都有可能会遭受攻击者袭击。作为软件开发人员,则是最大限度的保证应用程序安全。本文主要是对Node.js语言作出的安全开发建议。
以下为译文:
毫无疑问,Node.js已经变的愈加成熟,尽管这样,开发者仍然缺乏大量的安全指南。在这篇文章中,我将分享一些有关Node.js安全要点给大家,希望大家能够谨记于心。
1.避免使用Eval
Eval并不是唯一一个需要避免的函数,在后台,下面这几个表达式可以使用eval:
setInterval(String, 2)
setTimeout(String, 2)
new Function(String)
为什么要禁止使用eval?因为它会打开代码引起注入攻击,并且降低运行速度。
2.请用严苛模式(Strict mode)
这种情况下,你可以使用一个受限制的JavaScript变量,它可以消除一些隐性错误并且会把这些错误抛出去。
3.Undeletable属性
'use strict';
delete Object. // TypeError
4.对象声明必须是独一无二的
'use strict';
var obj = {
// syntax error5.Prohibits with
var obj = { x: 17 };
with (obj) // !!! syntax error
}你可以访问&来获得这些隐性错误的完整列表。
不用说,测试,测试,多点测试~
当然,不仅仅是单元测试,直戳。
7.对sudo node app.js说再见
我看到很多人在运行拥有超级用户权限的Node APP,为什么?因为他们想让应用程序能够监听80或443端口。
这种做法是错误的。小心一个错误/bug进程就能降低整个系统,因为它已经拥有合法的凭证去做任何事情。
取而代之,你应该设置一个HTTP服务器/代理来转换请求,可以是nginx、Apache等等。
8.避免命令注入
看看下面这段代码有什么问题?
child_process.exec('ls', function (err, data) {
console.log(data);
child_process.exec调用去执行/bin/sh,所以,这是一个bash注射器,而不是一个程序启动器。
当用户输入的内容传递到这个方法中,就会产生问题——要么是一个\要么就是$(),攻击者很可能会注入一个新的命令。
开发人员可以使用child_process.execFile来解决此类问题。访问
来查看如何处理命令注入。
9.临时文件
开发人员在创建文件时要特别注意,例如处理上传文件。这些文件很容易吃掉你所有的磁盘空间。
解决方法是使用Streams。
10.确保Web应用程序安全
这里不仅仅是针对Node——而是关于如何确保你的Web应用程序安全。
11.跨站脚本反射
当攻击者把代码注入到HTTP响应时,这种情况才会发生。应用程序在返回无效的输入到客户端时(大多数都是基于JavaScript编写的),应用程序很容易遭受这种类型攻击。攻击者可以盗取cookies、执行剪贴板和修改页面本身。
具体示例:
&a href="/index.php?user=&script"&/index.php?user=&script&/a&&alert(123)&/script&如果用户查询字符串在没有验证的情况下被发送回客户端,并且插入到DOM中,它便会执行。
如何预防:
禁止插入不可信的数据到DOM中;
在插入前进行HTML escape。
点击链接可以查看更多关于
12.停止Cookie盗窃
默认情况下,在同一个域里,JavaScript可以读取cookies,在跨站脚本攻击里,这是非常危险的。不仅如此,任何第三方JavaScript库都可以读取它们。
var cookies = document.cookie.split('; ');
如何预防:
开发者可以在cookies里面设置httponly标记,这样,JavaScript便无法接近cookie了。13.内容安全策略(CSP)
CSP(Content Security Policy)是一个额外添加的安全层,它有助于检测和减轻某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。
通过HTTP header中的Content-Security-Policy方法来启动CSP。
Content-Security-Policy: default-src 'self' *.这样便会允许内容来自可信域或其子域。
点击查看更多有关
14.跨站请求伪造(CSRF)
CSRF(Cross-Site Request Forgery)是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
&body onload="document.forms[0].submit()"&
&form method="POST" action="/user/delete"&
&input type="hidden" name="id" value="123555."&
执行上面这段代码的后果就是轻易删除用户配置文件。
如何预防:
要想阻止CSRF,你应该实现同步令牌模式(Synchronizer Token Pattern),幸运地是,Node社区已经帮你完成了这件事。长话短说,一起来看看它的工作原理:
当一个GET请求被服务检查为CSRF令牌——如果不存在,就创建一个;
当用户输入显示时,确保要添加一个隐形的CSRF令牌值;
当发送表单时,确保值是来自表单并且要与session相匹配。
开发者应该有所行动,制作一个
车间来指导现实应用开发。
15.保护Express应用程序:Helmet
Helmet是一系列帮助增强Node之Express/Connect等Javascript Web应用安全的中间件。安全功能包括:
crossdomain
有关Helmet更多内容,可以访问其托管地址:
16.使用工具
npm shrinkwrap:该命令可以给一个包的所有依赖关系上锁,并且创建一个npm-shrinkwrap.json文件。更多详情可以访问
retire.js:retire.js是一个命令行扫描器,帮助你找到你应用中依赖库存在的漏洞。
如果你想了解更多关于Node安全方面的内容,你可以关注
项目。他们的目标是审核NPM中的每一个模块,发现问题并修复问题。(张红月/编译)
英文来自:
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章当前标签: nodejs
lengyuhong
21:44 阅读:3555 评论:7
lengyuhong
22:17 阅读:2226 评论:5
lengyuhong
21:37 阅读:1481 评论:0
lengyuhong
23:55 阅读:2084 评论:0
lengyuhong
20:50 阅读:8051 评论:5
lengyuhong
23:01 阅读:746 评论:0
lengyuhong
21:29 阅读:1588 评论:0如何把上传的文件改名_nodejs吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:8,910贴子:
如何把上传的文件改名收藏
3D双端东方魔幻网游「大青云」勾魂公测,穿越逆转,封神故事,全新演绎!
求助大神们
拜托大神!
引用fs-extra包中的renameSync(oldName,newName)方法
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或& 国内 Node.js 2015 总结
国内 Node.js 2015 总结
时间:  来源:developerWorks  阅读次数:2372  小编:  我要分享:
nodejs 科普
来自朴灵大大的 C Node.js 简史
精华 Node.js最新Web技术栈(2015年5月)
Node.js最新技术栈之Promise篇
NodeJS 异常处理 uncaughtException 篇
NodeJS服务监控报警系统的核心实现和开源共建
聊聊实时 Node 应用性能监测的实现
Node.js 启动方式:一道关于全局变量的题目引发的思考
Node.js 启动方式:一道关于全局变量的题目引发的思考?续
Node.js的Buffer那些你可能不知道的用法
解析 node-murmurhash 库:说说 Node.js 二进制操作
简单实现Promise/A . 对着文档 .含注释
Node.js定制REPL的妙用
nodejs里的repl
记一次用 NodeJs 实现模拟登录的思路
timer的优化故事
消息系统设计与实现「上篇」
消息系统设计与实现「下篇」
cookie session,jwt,弱一致性数据与重放攻击
单点登录的三种实现方式
Web开发Session相关
Web 开发后端缓存思路
浅谈cnode社区如何防止csrf攻击
nodejs 工具类
Gulp实战和原理解析(以weui作为项目实例)
Lo-Dash 与 Underscore,Prototype 与 jQuery,两段恩怨情仇
NodeJS 错误处理最佳实践
10 Habits of a Happy Node Hacker 2016
从coffeeScript迁移到ES6
请用 Node.js 4.0.0
设计优雅 UI 的 7 条准则(翻译精简版)
Using Docker Compose in Node.js Project
向mongodb里插入10万条记录的代码怎么写?
Mongodb线上真实事故案例
mongodb分页优化
Mongodb索引实战
mongodb运维之副本集实践
玩转 React 服务器端渲染
chrome插件分享 gitlab-tree 更方便的浏览Gitlab上的代码
Meteor 的 reactive 特性
JavaScript柯里化
JavaScript语言中的糟粕
JavaScript类型检测
图解Javascript上下文与作用域
图解Javascript原型链
项目需要造了个轮子,轻量级双向数据绑定工具 modelite.js
初探 MySQL 的 Binlog
使用 coffee 来测试 cli 命令行工具
for feature
ES2015 & babel 实战:开发NPM模块
体验异步的终极解决方案-ES7的Async/Await
co的实现(Promise化的4.X版)
使用 BabelJS 编写 Nodejs Package
ES6语法实践,用ES6重写《JavaScript Patterns》中的设计模式
关注IT新闻资讯,了解最新的IT动态,扫描&&二维码&&
好特网,阅读的好地方!
  英伟达显卡黑屏怎么办?用黑苹果系统的用户遇到英伟达免驱显卡黑屏的问题,下文介绍黑…
今天的放开那三国2攻略给大家讲讲新玩法过关斩将的一些技巧,教大家怎么才能通关更多的关…
好特网精选
开源的磁盘控制,监视工具
系统:Vista/winXP/win7/win8
大小:782.74 KB
大家都在看什么
网友在2分钟点赞了
网友在11分钟点赞了
网友在12分钟点赞了
网友在18分钟点赞了
网友在26分钟点赞了
大小:0 Bytes
大小:0 Bytes
大小:0 Bytes
大小:0 Bytes
大小:0 Bytes
大小:6.43 MB
大小:36.03 MB
大小:30.43 MB
大小:41.5 MB
大小:11.75 MB
大小:103.1 MB
大小:6.81 MB
大小:268.4 MB
大小:80.5 MB
大小:137.9 MB
扫一扫二维码进入好特网手机版本!

我要回帖

更多关于 php csrf防御 的文章

 

随机推荐