【发布时间】:2021-04-18 14:09:41
【问题描述】:
我有一个 ASP.NET 应用程序,它一直在通过创建上下文来连接到 SQL Server 2016 数据库来工作。到目前为止,它运行良好,但我的任务是在代码中添加 javascript 以从数据库中检索数据并将其显示给用户。我听说通过 Javascript 直接连接到数据库存在安全风险,因为用户能够看到用户名和密码,所以我想知道是否有直接连接的安全替代方法可以让 Javascript 代码调用服务器端代码并检索数据(以 JSON 格式存储在数据库中)。我知道 AJAX 是如何检索代码并且已经了解了很多关于它的知识,但我不知道如何获取 AJAX 需要运行的连接字符串。我听说 Node.js 可以工作,但我们已经建立了一个服务器,所以我很困惑。任何建议将不胜感激!
旁注:我知道为什么直接连接不好here 已经有很好的解释,但是虽然最重要的答案是“连接到 sql 服务器的更好方法是使用一些服务器端语言,如 PHP 、Java、.NET 等。”他们没有解释如何通过服务器端与 .NET 进行连接
【问题讨论】:
-
“我听说通过 Javascript 直接连接到数据库存在安全风险,因为用户可以看到用户名和密码” - 更好的理由是因为您实际上看不到。在网页中运行的 JavaScript无法连接到数据库服务器,因为 JavaScript 无法创建 TCP Socket 连接。
-
您也不会公开您的数据库让随机的人看到 - 您的数据库应该位于防火墙后面,并且只有来自防火墙内部的其他连接才能访问它。另外——如果 JavaScript 可以对数据库做任何它想做的事情......你不认为攻击者可能会利用它并发出他们想要的任何 SQL 命令吗?
UPDATE USERS SET PASSWORD = 'haha'或UPDATE PRODUCTS SET PRICE = 1浮现在脑海中。 -
一般来说,当您有代码需要与服务器端交互时,您会编写一个 HTTP API(或 REST API)。这可能在 Node 中,但您提到这已经是一个 ASP.NET 站点。微软有 ASP.NET Web API。这会暴露 HTTP 端点供您的客户端代码调用,并且它能够与数据库交互,因为它位于您的防火墙内。 Web API 将处理身份验证和授权,以确保客户端不能只是做他们想做的事,而是只能做你授权他们做的事..
-
您提到了 ASP.NET,但没有提及您使用的是 WebForms 还是 MVC?
标签: javascript asp.net json .net database