Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 6:xyz.service.ts运行客户端还是服务器端?公开API URL/DB密码?_Javascript_Angular_Typescript_Security_Angular6 - Fatal编程技术网

Javascript Angular 6:xyz.service.ts运行客户端还是服务器端?公开API URL/DB密码?

Javascript Angular 6:xyz.service.ts运行客户端还是服务器端?公开API URL/DB密码?,javascript,angular,typescript,security,angular6,Javascript,Angular,Typescript,Security,Angular6,我目前正在四处工作,尝试一些东西,目前我正在与Angular合作 我无意中发现了这一点,并按照步骤完成了基本示例应用程序的工作 现在在data.service.ts中,我定义了getUsers()方法 本教程中使用了jsonplaceholder api。 我的问题是,如果我要用Angular构建一个应用程序并发布它,用户是否可以看到API-URL,或者服务器端Node.js上运行的Typescript/Javascript,而客户端只看到请求“getUsers()”和响应的JSON,而没有实际

我目前正在四处工作,尝试一些东西,目前我正在与Angular合作

我无意中发现了这一点,并按照步骤完成了基本示例应用程序的工作

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

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

再想一想,如果我想为用户使用我自己的数据库,我必须为我的数据库(比如说MySQL数据库)构建一个API,还是可以像下面的JavaScript代码片段那样直接连接到数据库:

var mysql = require('mysql')

var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'my_schema',
});
比如说,如果可以像这样直接连接到数据库,那么会不会有安全问题,因为到数据库的连接将建立在客户端,并且可能会暴露密码

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

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

再想一想,如果我想为用户使用自己的数据库,我会这样做吗 必须为我的MySQL数据库构建一个API,或者我可以连接吗 使用以下JavaScript代码段直接发送到DB:

var mysql = require('mysql')

var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'my_schema',
});
我建议构建一个API(例如RESTful)并集成客户端/用户身份验证,在访问任何有用的信息之前,在服务器上进行验证,并提供所有必要的提示。(
传输中的加密
散列
端点
安全性等)

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

祝你好运

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

虽然我没有注意到响应体中有任何JSON对象,但您已经了解了要点。在这里可以非常清楚地访问用于访问代码中的API的
http
组件


我很确定在这个示例中没有显示危险的API键。请不要引用我的话帮助我Ctrl+Shift+I

用户将看到浏览器执行的任何http请求(url、正文、标题…)。不要从客户端访问数据库,这有安全风险。浏览器中运行的所有Javascript都可以在浏览器中查看。所有AJAX请求也可以在浏览器中查看。但是,如果您确实有一个服务器端应用程序(Node.js,如建议但未标记),则客户端将永远无法访问该应用程序。@killedbycese如果您能够接受答案或详细说明,这将非常有用。