javascript - Angular 6 : xyz. service.ts 运行客户端还是服务器端?暴露 API-URL/DB 密码?

标签 javascript angular typescript security angular6

我目前正在使用工具,尝试一些东西,目前我正在使用 Angular。

我偶然发现了这个Tutorial我按照步骤操作并让基本示例应用程序正常工作

现在在data.service.ts中我定义了方法getUsers()

getUsers() {
  return this.http.get('https://jsonplaceholder.typicode.com/users')
}

在教程中使用了 jsonplaceholder-api。
我的问题是,如果我使用 Angular 构建一个应用程序并发布它,用户是否可以看到 API-URL 或者 Typescript/Javascript 在服务器端的 Node.js 上运行,而客户端只能看到请求“getUsers()”以及没有实际 API-URL 的响应 JSON?

再想一想,如果我想使用自己的用户数据库,我是否必须为我的 MySQL-DB 构建一个 API,或者我可以像下面的 JavaScript-Snippet 一样直接连接到数据库:

var mysql = require('mysql')

var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'my_schema',
});

假设是否可以像这样直接连接到数据库 - 是否会存在安全问题,因为与数据库的连接将建立在客户端,并且可能会暴露密码?

最佳答案

Let's say if its possible to connect directly to a database like this - will there be a security issue because the connection to the DB will be built on the client side and maybe exposing the password?

,存在安全问题;但是,如果它是客户端管理的软件,它可能适合您的用例。

In a second thought, if I want to use my own Database for Users do I have to build an API for my let's say MySQL-DB, or can I connect directly to the DB like with this JavaScript-Snippet:

我建议构建一个 API(例如 RESTful)并集成在服务器上验证的客户端/用户身份验证,然后再访问任何有用的信息及其所需的所有功能。 (传输中加密散列端点安全性等)。

这取决于您的软件的用途。如果只是一个测试 Angular 东西的迷你项目,那么请随意专注于学习前端开发。

祝你好运!

任何本地 JavaScript 代码都可能被黑客攻击,请分析暴露代码中嵌入的任何公共(public) API key 的风险。您可以对本地数据库文件进行加密,但如果仅由客户端实现加密,那也不安全。

Chrome DevTools Network tab on this Stack Overflow page. You might be familiar with this.虽然我没有注意到响应正文中有任何 JSON 对象,但您已经明白了要点。您可以在此处非常清楚地访问用于访问代码中的 API 的相同 http 组件。

我很确定此示例中没有泄露危险的 API key 。不要引用我的话帮助我 Ctrl+Shift+I

关于javascript - Angular 6 : xyz. service.ts 运行客户端还是服务器端?暴露 API-URL/DB 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131887/

相关文章:

typescript 定义。什么时候类需要动态化?

javascript - 无法从另一个 Controller 访问 $rootScope

javascript - 使用 Cordova (PhoneGap) 在 iOS 上显示联系人

javascript - 在成功的 AJAX 调用和 php echo 的响应后附加数据并添加类

javascript - Three.js 不适用于 Angular 5

angular - 如何为tabPanel定义静态索引

angular - 调用函数时清除 Observable 值

javascript - 使用javascript将音频文件转换为base64

css - 如何在 *ngFor 中突出显示选定的行?

Angular 2/4/5 在 IE11 中不起作用