Javascript Angular 6:xyz.service.ts运行客户端还是服务器端?公开API URL/DB密码?
我目前正在四处工作,尝试一些东西,目前我正在与Angular合作 我无意中发现了这一点,并按照步骤完成了基本示例应用程序的工作 现在在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,而没有实际
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如果您能够接受答案或详细说明,这将非常有用。