保护我的Node.js应用程序的REST API?

littlejim84:

我可以在REST API上提供一些帮助。我正在编写一个使用Express,MongoDB并在客户端具有Backbone.js的Node.js应用程序。最近两天,我一直在努力解决所有问题,但运气不佳。我已经签出了:

我希望后端和前端尽可能分开,所以我认为使用精心设计的REST API会很好。我的想法是,如果我打算开发一个iPhone应用程序(或类似的东西),它可以使用API​​来访问数据。

但是,我希望这是安全的。用户已登录我的Web应用程序,并且我想确保我的API安全。我阅读了有关OAuth,OAuth 2.0,OpenID,Hmac,哈希等的信息...我想避免使用外部登录(Facebook / Twitter / etc),我希望在我的应用程序/服务器上进行注册和登录。

...但是我还是很困惑。也许是在深夜或我的大脑被炸了,但是我真的可以在这里做些什么。创建安全API的步骤是什么?

任何帮助,任何信息,任何示例,步骤或任何东西都将是不错的。请帮忙!

mjtamlyn:

这是一种不同的思考方式:

让我们暂时假设您没有使用API​​。您的用户登录到该应用程序并提供了一些凭据,然后您向该用户提供了cookie或类似的令牌,用于标识该用户已登录。然后,该用户请求包含受限信息的页面(或创建/修改/删除它),因此您检查此令牌以确保允许用户查看该信息。

现在,在我看来,您唯一要更改的就是信息的传递方式。而不是将信息作为呈现的HTML传递,而是将信息作为JSON返回并在客户端呈现。您对服务器的AJAX请求将携带与以前相同的登录令牌,因此我建议仅检查该令牌,并以相同的方式将信息限制为“恰好允许用户知道”。

您的API现在和您登录时一样安全-如果有人知道访问api所需的令牌,那么他们也将登录到该站点,并且无论如何都可以访问所有信息。最好的一点是,如果您已经实现了登录,那么您实际上并不需要做更多的工作。

诸如OAuth之类的系统的重点是通常通过第三方应用程序并以开发人员的身份提供这种“登录”方法。对于iPhone应用程序或类似应用程序来说,这可能是一个很好的解决方案,但这已成为未来。接受不止一种身份验证方法的API没错!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

保护与台式机应用程序结合使用的Rest API

保护移动应用程序无需登录即可访问的REST-API

与基于 Vue 的 Web 应用程序连接时如何保护我的后端 API

使用SSL / TLS保护前端JS应用程序和Rails API的通信

如何保护Sails.JS API应用程序免受SQL和参数注入的侵害?

保护Node.js中的API路由

twitter REST API是否会返回仅使用我的应用程序(如facebook)的用户朋友?

如何使用WordPress REST API从我的角度应用程序中提取更多WordPress帖子

我可以使用react native使用Django rest api构建移动应用程序吗?

我可以在flutter应用程序中使用authorize.net rest api吗?

我可以将 kotlin android 应用程序连接到 .net5 REST API

似乎无法让 Pagination 在我的 WooCommerce REST API 应用程序上工作?

Spring Security中可以有多个配置来保护Web应用程序和Rest API吗?

来自移动应用程序的REST API-使用CAPTCHA保护首次通话是否有意义?

无需用户身份验证移动应用程序即可保护私有REST API的最佳方法

使用REST API时如何保护用户密码免受应用程序所有者的侵害?

使用 node js api 时如何尊重 React js 前端应用程序中的 windows 使用

使用 node.JS 应用程序错误编写 express JS API

为我的REST API创建一个单独的应用程序还是将其放置在我的工作应用程序中?

Kubernetes-保护后端API端点(MERN应用程序)

保护PHP API以在Android应用程序中使用

如何在Android应用程序中保护ElasticSearch API?

从其他 Web 应用程序保护 API

从 Angular 应用程序调用 REST API

Rest API Android应用程序

如何在我的角度应用程序中调用和使用spring REST POST API,该应用程序返回没有主体的字符串?

如何在Ionic / Cordova应用程序中保护我的Google Maps Javascript V3 API密钥?

如何为 Azure 上的 Node.js Api 应用程序启用 BLOB 日志记录?

将Angular 2应用程序与Express-Node JS API结合使用