设为首页 收藏本站
查看: 595|回复: 0

[经验分享] 《Nodejs实战》读后感

[复制链接]

尚未签到

发表于 2017-2-21 11:37:54 | 显示全部楼层 |阅读模式
  前言
  其实很多人都开始学习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相关的服务安全,但是确实没有如此深刻,感谢这次读书活动,内容很干货

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345224-1-1.html 上篇帖子: NODEJS(3)File Upload Sample 下篇帖子: nodejs npm常用命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表