微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – NodeJS / express – 公共API端点的安全性

我正在开发基于NodeJs / Express的网站项目,对于一些UI部分,我正在使用 Jquery ajax请求来获取辅助数据.

我们如何处理用于浏览器进行ajax调用的Rest API端点的一些基本控制?
我正在考虑某种令牌授权,但是一旦它被截获,它也可以被其他客户端(脚本等)使用,那么我们如何保护我们的服务器免受不必要的请求?在这种情况下应该使用哪些其他控件(从同一客户端,客户端黑名单等中识别太多请求)?

解决方法

身份验证,授权,安全性主要有三个主题.我会给出链接,只有很短的答案.主题足以写几本书.

身份验证 – 谁是提出请求的人.验证用户有许多“策略”.请检查大多数pupular模块:http://passportjs.org/docs.

当然,您可以单独使用一种或多种策略.

对于无状态认证,jwt令牌非常方便.如果你想自己编写代码(Passport有这个策略),请检查此链接(网络中的许多链接之一)https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens.

如何防止令牌拦截?始终使用https并将令牌过期时间设置为短.

存储令牌客户端的位置在哪里?详细看看这个https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/简而言之,不要因为XSS攻击而存储在网络存储中.使用cookie,当它们被正确配置时,它们是安全的(更多在附加链接中),如果没有配置它们就会受到威胁.

授权:我们了解用户,但他只能访问某些资源.请查看https://github.com/OptimalBits/node_acl
有node_acl和护照:https://gist.github.com/danwit/e0a7c5ad57c9ce5659d2
简言之,通过身份验证用户.我们现在谁想要什么.我们设置角色和资源,并定义角色和资源关系.然后我们为每个用户角色设置.模块将检查我们的用户权限.

安全性:请在sails框架http://sailsjs.org/documentation/concepts/security的文档中查找此主题,它们描述了攻击以及框架如何阻止它们形成.我写的是快递:

DDOS :(你的问题的一部分“来自同一客户的请求太多”)“在API层,没有太多可以通过预防的方式完成”.这对于服务器管理员来说是最受欢迎的.简而言之,使用负载均衡器.如果它是一个IP(而不是数百个)那么黑名单或deley响应(开始看看这个https://www.npmjs.com/package/delayed-request,但我认为解决方案必须更复杂).

CSRF:“强制最终用户在Web应用程序后端执行不需要的操作的攻击类型”.看看这个模块https://www.npmjs.com/package/csrf

XSS:“恶意代理设法将客户端JavaScript注入您的网站的攻击类型”不信任来自用户的任何数据.始终验证,过滤,消毒.看看这个https://www.npmjs.com/package/xss

在帆的文档中,有更多的攻击类型,但上面是最受欢迎的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐