angularjs - 在网页中提供 REST-API 数据而不暴露 API 端点

标签 angularjs node.js rest express

我是 MEAN 堆栈的初学者。

调用未经身份验证的 REST API(无需用户登录)时,API 端点会在 JS 文件中公开。通过论坛查看,没有办法阻止滥用者直接使用 API 端点,甚至无法阻止使用这些端点创建自己的 Web/应用程序。所以我的问题是,有什么方法可以避免暴露 JS 文件中的端点吗?

同样,有没有什么方法可以不在前端使用 REST 调用,并且仍然能够在 MEAN 堆栈中提供这些动态内容/API 输出数据?我使用 EJS。

最佳答案

没有真正安全的方法来做到这一点。您可以在服务器上渲染页面,这样客户端只能看到 HTML(以及一些有限的 JS)。

首先,如果您不启用 CORS,您的 AJAX 调用将受到浏览器的保护,即只有域 A 提供的页面才能对域 A 进行 AJAX 调用。

Google map 等公共(public) API 提供商会要求您使用他们链接到 Google 帐户的 API key 来保护自己。 该键在 JS 中仍然可见,但是 - 如果滥用 - 可以轻松禁用。

还有通过混淆实现的伪安全性,即使攻击者更难提取您正在使用加密 API 交互的公共(public) secret 。

http://javascript2img.com/这样的工具远非完美,但会让攻击者花费大量时间试图弄清楚你的代码的用途。 通常这就足够了。

还有多种方法可以按需下载 JS 代码,然后检查它运行的 DOM 是否是您的。

关于angularjs - 在网页中提供 REST-API 数据而不暴露 API 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059515/

相关文章:

node.js - sequelize include,连接两个关联表

javascript - catch 之后执行

javascript - 不区分大小写的自定义排序函数

javascript - 如何创建if语句来处理html中的空字符串

node.js - Heroku 上的自动部署问题

javascript - 如何使用 Node.js/Express 自动编译客户端 CoffeeScript 文件

javascript - 使用 REST API 将文件(从公共(public) URL)上传到 onedrive 时出错

java - Java 中的 RESTful Web 服务 - 400 错误请求 - 方法调用错误?

wcf - 使用 webMessageEncoding 的 webHttpBinding : how to configure?

javascript - 我可以使用 AngularJs 指令将样式应用于伪元素吗