是否有优化的Web堆栈以最大程度地减少服务器端编码

Is there a web stack optimized to minimize server-side coding?

本文关键字:程度地 编码 服务器端 优化 Web 堆栈 是否      更新时间:2023-09-26

对于我们公司内部网上最近的几个项目,我使用了非常简单的nginx + redis + webdis +客户端javascript堆栈来实现一些简单的数据分析工具。 这次体验绝对很棒,特别是与我之前使用其他堆栈的经验(包括自定义c ++,apache/mod_perl,ASP.Net MVC,.Net HttpListener,Ruby on Rails和一些Node.js相比。 鉴于客户端模板工具和前端库(如 jquery-ui)的可用性,似乎我很乐意使用这种无服务器端代码堆栈来实现更复杂的 Web 应用程序(如果需要,也许可以用 couchdb 替换/增强 redis)......

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

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

我无法评论框架。

您已经提到了这样做的主要弱点,尤其是在互联网上,那就是安全性。问题不仅仅是身份验证。问题本质上是客户端的开放性,在这种情况下是Web浏览器和协议,特别是使用JSON或XML或其他明文协议的HTTP。

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

可以说,回到客户端服务器开发的黄金时代,这正是人们所做的,只是人们使用特定于数据库的驱动程序并将SQL文本直接发送到DB的后面,而不是通过HTTP隧道传输一些数据。

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

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

例如,CouchDB 不能以这种方式进行保护。如果某人对服务器拥有权限,则他们有权访问所有数据。所有数据。你想让他们看到的东西,以及你不想看到的东西。

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

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

存储过程大多被应用程序层和应用程序服务器所取代,数据库越来越被降级为"哑存储"。但概念是相似的。

某些方案将数据直接发布到 Web 是有价值的,例如分析示例。这是一个特定的,阅读沉重的利基市场。但除此之外,这个概念恐怕效果不佳。混淆的JS很难阅读,但不安全。

这可能就是为什么你可能很难找到这样的框架(我自己根本没有看过)。