前言:
其实很多人都开始学习Node了,或者也试了一些express这样的库去做web开发,但是实战的经验确实不是很多,原因很简单:现在的项目或者自己的level还没法去接一些这样node的case,而这本书集聚了cnode社区的老人,里面大部分还是干活。
正文:
试读的部分内容属于后面的,主要是专注在node服务相关的安全。
- 什么是web安全?
- 保密性:保护书籍内容不泄露,加密
- 完整性:数据不被篡改
- 可用性:web站点可被访问,拒绝Dos
- HTTP管道洪水漏洞
这个主要出现在0.8.26和0.10.21之前,原因:
客户端不接收服务器端的响应,但客户端又拼命发送请求,造成Stream流无法泄洪,主机内存耗尽而崩溃。
一些攻击手段:
- SQL注入:其实这个不是很了解,写的稍微少点
大致记一下防范措施:保证拼接到SQL查询语句的变量都经过escape过滤函数,使用比较成熟的ORM框架
- XSS脚本攻击【Cross-Site-Scripting】
其实这个前端还是遇到过很多次的:
- ajax的xss注入
- base64注入
- ASC II码
- 图片src的 onerror
- link的href
- iframe
其实这些大部分都是要过滤 < 和 >
- CSRF请求伪造
cookie的特性:
- 同源性:保证不会跨域发送造成泄密
- 附带性:保证每次请求服务器端都会在请求头带上cookie信息
session对象可以保存在文件中,也可以保存在内存里。建议保存在第三方媒介:redis或者mongodb
express框架将session保存到内存里面。
除了可以用cookie保存sessionid,还可以用url参数来保存
Etag来保存sessionid也被使用在用户行为跟踪上:
Etag是静态资源服务器对用户请求头中if-none-match的响应:
一般第一次请求某一个静态资源是不会带上任何关于缓存信息的请求头的,这个时候静态资源服务器根据资源的大小和最终修改时间,哈希计算一个字符串作为Etag的值响应客户端。
第二次再访问静态资源的时候,由于本地浏览器具有次图片缓存,但不确定服务器是否已经更新掉了这个静态资源,发起请求带上if-none-match参数,其值就是上次请求服务器响应的Etag值。服务器接收到这个if-none-match值,再根据算法生成Etag,并对比,如果相同,说明资源没有更新,响应状态304
其实以前对Etag的理解好像有点偏差,通过这里面的描述,加深了Etag的值的定义的理解。
- 应用层DoS拒绝服务
- 文件路径漏洞
- 加密安全
- 对称加密:AES DES
- 非对称加密:RSA
- 不可逆加密:md5、SHA-1
这边有一个例子:
var crypto = require('crypto'); var md5 = function(str, encoding){ return crypto.createHash('md5') .update(str) .digest(encoding || 'hex'); }; console.log(md5("nodejs"));
其实最早的时候,我一直是用这个方法做md5的转换,但是书中确实提到,一些网站很简单地就破解了
后面还是得用时间戳 + gap + 某个需要加密的东西
结语:
其实也关注过Node相关的服务安全,但是确实没有如此深刻,感谢这次读书活动,内容很干货
相关推荐
《Node.js实战》是一本深度探讨Node.js技术的书籍,由知名Node.js核心框架贡献者、社区活跃分子Mike Cantelon撰写。作为一名资深的培训师和演讲人,Cantelon以其丰富的经验与深入的理解,为读者提供了全面而实用的...
VUE + nodejs实战
Nodejs实战第二季,Nodejs实战,通过7个实例分别讲解了Node.js在实战开发中的应用,这些章节既涉及Docker、Koa 等最新技术,也涉及OAuth2、命令行工具、消息队列、单元测试、编写C/C++模块等实战中经常会遇到的问题...
Nodejs 实战
nodejs开发实战详解部分,大概到第二章,高清,求完整版
这个就是Vue3 + nodejs 实战 --- 文件上传项目的前端源码(Vue3)+ 后端(Nodejs),实现的文件上传的代码,主要实现了(图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)这些功能,如果对文件上传有...
多方位介绍相关场景开发实战。(2014版) 通过编写原生代码,讲解NodeJs的应用开发 适用于Nodejs初学者; javascript程序员; 想全面了解,系统学习nodeJs的人员以及爱好者; 从事nodejs开发的相关技术人员;
这个就是Vue3 + nodejs 实战 --- 文件上传项目的前端源码(Vue3)+ 后端(Nodejs),实现的文件上传的代码,主要实现了(图片上传,多文件上传,拖拽上传,大文件分片上传,断点续传)这些功能,如果对文件上传有...
微信小程序+Nodejs项目实战合集 内含两套完整实战教你全为了解一个小程序的开发流程及步骤
服务器端JavaScript?没错。Node.js是一个JavaScript服务器,支持可伸缩的高性能Web应用。借助异步I/O,这个服务器可以同时做很多事情,能满足聊天、游戏和实时统计等应用的需求。并且既然是JavaScript,那你就可以...
nodejs入门到实战(一、二、三)源代码,对应分类:https://blog.csdn.net/zengraoli/category_10327904.html 中的文章 nodejs入门到实战(一)、nodejs入门到实战(二)、nodejs入门到实战(三)
nodejs实战第二版第6章原始码 说明 运行环境system: Windows 64bit node version: v6.9.1 npm version: v3.10.8 IDE: Webstorm 2016.2.3 本部分代码包含了6.2节的原始代码,6.3节源码由于与实际项目相关,并且没有...
Nodejs+React 实战开发区块链 网盘
《node.js开发实战》,2018年1月版,忽如寄著,书中所有示例的代码
本"NodeJS整理手册文档"旨在为对NodeJS感兴趣的朋友们提供一个全面、详尽的学习资源,涵盖了NodeJS的基础知识、核心特性以及实践案例。 一、NodeJS基础 NodeJS的基础知识包括安装与环境配置、模块系统、事件驱动...
利用nodejs 编写服务器端,利用express构建服务器,采用路由器的方式管理路由,导入mysql模块,前端页面通过get方式发送查询请求,通过post方式发送注册请求,通过连接池的方式完成数据库数据的读取与注册功能,使用...