是否可以直接从 Javascript 访问 MySQL 数据库

Posted

技术标签:

【中文标题】是否可以直接从 Javascript 访问 MySQL 数据库【英文标题】:Is it possible to access a MySQL database straight from Javascript 【发布时间】:2012-04-03 18:53:59 【问题描述】:

有没有办法完全使用客户端 javascript 访问 mysql 数据库,还是需要通过 php 或 C# 等服务器端语言?

谢谢

【问题讨论】:

你需要通过服务器。 见:***.com/questions/7816122/… 【参考方案1】:

您需要使用服务器端语言。否则,这将是一个巨大的安全漏洞。任何人都可以访问这个数据库并向它发送任意 SQL 查询。

【讨论】:

【参考方案2】:

理论上,应该可以使用网络套接字等较新的功能。但您不应该这样做,因为您必须公开您的凭据。以您想使用的任何可用语言创建服务器端包装器/协商器脚本并调用该脚本。您也可以使用它来验证输入(例如过滤太荒谬的高分或不可能的值;取决于您在做什么)。

【讨论】:

【参考方案3】:

是的,您可以使用 Node.js 之类的 Javascript 库在 Javascript 中执行 MySQL 查询 - 在客户端执行此操作是一个非常糟糕的主意 (TM),因为您需要向用户发送身份验证详细信息并提供客户端连接到您的 MySQL 服务器的能力,这意味着它必须可以通过任何 IP 访问互联网!不好。但是,如果您真的想要仅仅因为您更喜欢 Javascript 但您只打算在服务器上执行它,请尝试:(What MySQL drivers are available for node.js?)。

应该做的是用 PHP、Perl、Python 或 C# 实现一个小的服务器端脚本,它只从查询中输出您想要的数据并使用 AJAX 来处理响应。

【讨论】:

【参考方案4】:

你需要通过服务器。让客户端代码直接访问数据库将是一个巨大的安全漏洞,即使您可以做到。

请注意,您可以在服务器上使用 JavaScript,而不必使用 PHP 或 C#。您可以使用多个服务器端 JavaScript 引擎,NodeJS(运行 Google 的 V8 引擎)和 Rhino(运行在 Java 堆栈上)是其中的两个。当然,微软在服务器上支持 JScript 至少 15 年了。

【讨论】:

【参考方案5】:

对于像 MySql 这样的数据库,您绝对应该使用服务器端语言。如果您希望 javascript 成为您唯一的语言,我建议您查看 nodejs 或 couchDB

【讨论】:

【参考方案6】:

Javascript,如果在浏览器中运行,就无法访​​问 MySQL 数据库。一方面,这是一个技术限制,因为 Javascript 无法与任意协议通信(不,WebSockets 不是解决方案)。请注意,作为服务器端的 Node.js 是一种“不同类型的 javascript”。

然后是安全问题。如果 your javascript 可以直接访问数据库,我可以轻松地自己访问数据库。我将能够读取和操作与 your javascript 相同的数据。出于安全考虑,将其称为噩梦是一种委婉说法。

您必须 - 并且想要 - 通过服务器端应用程序路由数据库访问。如果该应用程序是用 PHP 编写的,C# 或 Assembly 并不重要。使用 Node.js,您甚至可以在服务器端使用 Javascript。使用你觉得舒服的。

【讨论】:

有可能,但是,不建议您使用例如mysql-live-client(来自npm)。我只是不明白你为什么要公开你的数据库凭据和安全性,但也许有一个案例:) npmjs.com/package/mysql-live-client#principles-of-mysql-live 如果用户必须在页面加载后将其凭据输入到页面中,而不是让它们烘焙,则不会出现安全问题。有一些用例。

以上是关于是否可以直接从 Javascript 访问 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

通过 JavaScript 直接访问 MongoDB

用Javascript从PHP数据库访问表

是否可以仅从应用程序提供对智能合约的访问并阻止直接访问?

使用 Javascript 从 Web 应用程序访问设备指南针

可以直接从gpu访问硬盘吗?

从 JavaScript 访问会话变量