Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 是否有优化的web堆栈以最小化服务器端编码?_Javascript_Security_Rest_Client Side_User Roles - Fatal编程技术网

Javascript 是否有优化的web堆栈以最小化服务器端编码?

Javascript 是否有优化的web堆栈以最小化服务器端编码?,javascript,security,rest,client-side,user-roles,Javascript,Security,Rest,Client Side,User Roles,对于我们公司内部网上最近的几个项目,我使用了一个非常简单的nginx+redis++客户端javascript堆栈来实现一些简单的数据分析工具。经验是绝对精彩,特别是与我以前的其他堆栈(包括定制C++、Apache、MODYPURL、ASP.NETMVC、Net HttpListener、露比Rails和一点No.js)相比。考虑到客户端模板工具和前端库(如jquery ui)的可用性,我似乎可以很高兴地使用这样一个无服务器端代码堆栈实现更复杂的web应用程序(如果有必要,也许可以用couchd

对于我们公司内部网上最近的几个项目,我使用了一个非常简单的nginx+redis++客户端javascript堆栈来实现一些简单的数据分析工具。经验是<强>绝对精彩,特别是与我以前的其他堆栈(包括定制C++、Apache、MODYPURL、ASP.NETMVC、Net HttpListener、露比Rails和一点No.js)相比。考虑到客户端模板工具和前端库(如jquery ui)的可用性,我似乎可以很高兴地使用这样一个无服务器端代码堆栈实现更复杂的web应用程序(如果有必要,也许可以用couchdb替换/扩充redis)

当然,这个堆栈的主要限制是,我的数据库直接暴露于网络——在这种情况下,在防火墙的公司网络上是可以接受的,但如果我想在internet上使用相同的技术,这并不是一个真正的选项。我需要某种程度的服务器端逻辑来安全地处理身份验证和用户角色管理


是否有任何最佳实践或通用开发堆栈?理想情况下,我想要一些轻量级的东西,并提供一个简单的框架,在将客户端请求转发到数据库后端之前,通过自定义用户角色逻辑过滤客户端请求。我对任何类型的服务器端模板或ActiveRecord风格的存储级抽象都不感兴趣。

我不能对框架发表评论

你已经提到了它的主要弱点,特别是在互联网上,那就是安全性。这里的问题不仅仅是身份验证。这里的问题本质上是客户端的开放性,在本例中是web浏览器和协议,特别是使用JSON或XML或其他一些明文协议的HTTP

举一个例子。这很简单。假设一个HTTP服务接受SQL查询并返回表示行的JSON集合。这很容易写。您可以使用任何允许您使用SQL访问RDBMS的工具,在不到一个小时的时间内从零开始敲出一个新的RDBMS

可以说,在客户机-服务器开发的黄金时期,这正是人们所做的,只是人们使用特定于数据库的驱动程序,直接将SQL文本发送到数据库的后端,而不是通过HTTP传输数据

今天的问题是协议过于开放。如果您实现了上面提到的SQL服务,那么本质上就是将整个应用程序转换为SQL注入向量

你根本无法在野外得到那样的东西。该协议是开放给琐碎的观察(每个浏览器都有一个内置的包嗅探器,有效的今天),以及应用程序的所有源代码。如果您尝试对数据进行加密,那么这一切也都在客户机上完成——包括进程的源以及涉及的任何密钥

例如,CouchDB不能通过这种方式进行安全保护。如果有人拥有服务器的权限,他们就拥有所有数据的权限。所有的数据。你想让他们看到的东西,你不想看到的东西

当然,解决方案是服务层。比简单的原始数据流更高级的东西。可以保护的东西,可以对客户保密。但这自然需要服务器端编程才能实现,表面上看,这需要更多的工作、更多的层、更多的数据转换,更痛苦

回到过去,人们只使用数据库中的存储过程编写整个系统。这些过程将拥有调用它们的用户所没有的权限,因此您可以在服务器上限制用户可以看到或不能更改的内容。您可以在受限视图上为它们提供无限制的选择功能,而存储过程可能有权实际更改数据或访问某些隐藏列

存储过程大部分已经被应用层和应用服务器所取代,数据库越来越沦为“哑存储”。但概念是相似的

在某些情况下,将数据直接发布到web是有价值的,例如您的分析。这是一个特定的、阅读量大的利基。但除此之外,我担心这个概念并不奏效。模糊JS很难阅读,但不安全

这可能就是为什么您在定位这样一个框架时会有点困难的原因(我自己一点都没看过)