Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从javascript连接SQL数据库是一种不好的做法?_Javascript_Sql_Security - Fatal编程技术网

为什么从javascript连接SQL数据库是一种不好的做法?

为什么从javascript连接SQL数据库是一种不好的做法?,javascript,sql,security,Javascript,Sql,Security,从外观上看,强烈建议不要使用javascript连接SQL数据库,因为它存在安全问题 请具体说明问题的具体内容和原因 delete all_users 不,是真的!你真的想允许任何人访问你的数据库并编辑它吗?如果您只给任何人访问权限,则无法以任何方式保护访问权限 您的用户名和密码将被公开,因此每个人都可以更改您的数据库。Javascript保存密码不安全 你能说:javascript在哪里执行? 如果您说:用户浏览器,您的答案是正确的。 因此,您已经发送了带有连接字符串的代码,全部发送给用户,

从外观上看,强烈建议不要使用javascript连接SQL数据库,因为它存在安全问题

请具体说明问题的具体内容和原因

delete all_users
不,是真的!你真的想允许任何人访问你的数据库并编辑它吗?如果您只给任何人访问权限,则无法以任何方式保护访问权限


您的用户名和密码将被公开,因此每个人都可以更改您的数据库。Javascript保存密码不安全

你能说:javascript在哪里执行? 如果您说:用户浏览器,您的答案是正确的。 因此,您已经发送了带有连接字符串的代码,全部发送给用户,遍布世界各地。 许多人不知道如何使用它,但许多人非常了解它。他们有锁和钥匙。
希望它能帮到你。

让我们诚实地在这里把它分解一下

因此,您有一个需要数据的应用程序。这些数据需要来自某个地方。您可以从SQL数据库获取该数据

现在,虽然SQL具有基于权限的访问等功能,但要正确地保护真正“向外界开放”的内容,您必须将其严格锁定。与其他技术相比,使用SQL并不是特别容易,并且可以让您了解一些事情

SQL server被设计为在一个封闭的环境中,只有服务器端代码才能与其通信。要从中获取数据,您需要用户名/密码。所以这必须存储在客户端。所以你现在可以得到你的数据了。你只会得到你需要的数据。但是,是什么阻止了现实世界中任何试图获取更多信息的用户呢。除非你锁定了每一张表,每一个存储的进程和所有其他东西——什么都没有。还有,是什么让用户停止对整个数据库进行过滤?根据我对SQL的了解,您不能限制用户获取一定数量的行

代理服务(或web服务)或任何设计供公众使用的前端服务所做的是为您提供某种方式来过滤或设置可访问内容的限制。如果您的应用程序只需要某些数据,那么服务将只提供这些数据。调用已修复-
getUserProfile()
。服务器已经知道当前用户,因此它将只获取该用户的详细信息。如果有一个
getUserProfile(65)
,您如何真正知道用户“65”是否是请求它的人

SQL不理解Cookie或会话变量的复杂性,它只是说“嘿,有一个有效的用户名和密码,给他们所有他们可以访问的东西!”它不是设计为只返回一行基于用户

总之,您无法控制用户可以访问多少数据,因此您使用的web服务能够理解用户应该看到什么,并且只提供这些信息

…这只是从数据库中读取-写作是一种全新的痛苦和折磨


TL;DR这是一个坏主意

如果浏览器中使用JavaScript,这是一个坏主意,因为:查看源代码-查看连接信息或查询-创建自己的查询,删除所有数据如果SQL语句是客户端的,您的数据库将对选择向您发送任何SQL语句的任何人开放。“强烈建议使用javascript连接sql数据库“你的意思是:强烈建议禁止?用户不能从sqlcmd运行它吗?我希望不能。否则你应该检查你的DMZ,比如现在。@Yakov-你需要一个DB uname/pwd来访问数据库。您通常会将其保留在中间件上。但是如果JavaScript访问数据库,则需要在客户端中使用uname/pwd。因此,即使您的防火墙允许DB访问,信任也需要保持隐私。@lloydm我希望看到这种情况发生;)@亚科夫:需要更多的帮助吗?