0

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

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

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

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

  • 服务端路由代码可以找到:server > Dao > clientDao.js
  • 控制器、HTML 和客户端路由可以在“公共”文件夹中找到。

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

谢谢!

4

1 回答 1

1

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

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

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

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

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

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

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

于 2015-11-27T10:17:14.297 回答