(NodeJS、MySQL、AngularJS、Express 4.0)不为用户阻止我的 api/routes 的风险?

(NodeJS, MySQL, AngularJS, Express 4.0) Risks of not blocking my api/routes for users?

目前我正在开发一个 CRUD 应用程序,我将(有一天)部署并用于我自己的初创公司。然而,我离完成这个产品还差得很远,我偶然发现了一个我似乎无法弄清楚的问题。

我正在使用 Express 服务 angular 我的 MySQL 数据库中的数据。为此,我必须创建“/api/”路线。但是,如果我(例如)转到“/api/clients”,我将能够在一个丑陋的数组中看到整个客户端列表。在这种情况下,这并不重要,因为这只是他们无论如何都能看到的数据。

但是我的问题是,阻止用户使用此类路由是否重要?当用户转到 'api/createClient' 时会出现问题吗?这会导致破坏我的数据库的数据库注入吗?

我的项目可以在这里找到:https://github.com/mickvanhulst/BeheerdersOmgevingSA

我希望我的问题足够清楚,并且有人能够回答我的问题。如果不是,请说明问题不明确的原因,我会尽力澄清。

谢谢!

查看代码,您的 URL 似乎可以直接使用浏览器访问,如果可以,那么这确实会带来安全问题。

如果在进行数据库调用之前未对这些数据进行验证和清理,则使用用户提供的字段或值进行数据库事务是主要的安全问题。

我建议在制作 APIs 之前遵循最少的步骤,它是内部的但可以使用浏览器访问 -

  1. 如果这是内部的,则不要从服务器提供 HEADER ACCESS CONTROL 或将其仅限于您的域名。这可以防止从其他域对您的 API 进行任何 ajax 调用。

  2. 在进行任何类型的数据库事务之前,请彻底清理和验证所有数据。到处都有很多关于如何做到这一点的material。

  3. 如果这些 API 用于内部目的,请在您的路由中执行逻辑工作之前为您的 API 提供某种身份验证在中间件的帮助下。您可以利用 cookie 身份验证进行非常简单的 API 身份验证管理。如果您想要更高级别的安全性,也可以使用 JSON Web 令牌。

如果您正在操作您的数据库,那么我强烈建议您在 API 中使用某种身份验证。当然,第2点是必须的。