user是什么意思(电脑上users是什么意思)

2024-04-25 01:07:42 | 来源:通风明媒正娶网
小字号

当你意识到你在项目之初所做的那些轻巧简单的想法是完全错误的时候,你已经在这个项目上花了六个月的时间了。

现在,你需要解决这些问题来保持系统运行。你发现你在这个项目上的精力远远超出了你的预期。如果一个红豆博客从一开始就以正确的方式去做,就不会出现这种情况。

今天,我要告诉你的是一个常见的错误,一个会给你带来无穷无尽问题的词,那就是“用户”。

这个词有两个基本错误:

对你的需求来说 “User” 几乎从来都不是一个好的描述。“User” 会导致一个基本的设计安全缺陷。

“用户”的概念是模糊的,使用更精确的术语几乎总是更好。

您没有用户。

起初,没有一个软件系统真正拥有用户。乍一看,“用户”是一个很好的描述,但稍加思考,你会发现,你的业务逻辑其实比这复杂得多。

我就用三个例子,从一个极端的情况说起。

订票系统中没有“用户”。

我曾经写过机票预订系统的访问控制逻辑,以下只是几个需求:

旅客可以使用预定记录码通过网站查看预定信息。购买者可以通过信用卡号后四位数在网站上修改预订信息。旅行社可以查看和修改他们的预订。航空公红豆博客司的值机人员可以根据角色和航空公司来查看和修改预订信息,这需要旅客提供身份信息。

就不一一列举了。与人类相关的一些基本概念有“乘客”、“代理商”(网站也可视为代理商)、“买家”。“用户”这个概念根本没用,我在很多请求中根本用不到这个词。例如,我们的请求必须包括乘客和代理的文档,而不是用户的文档。

Unix没有“用户”

让我们看一个不同的例子。Unix(现在称为POSIX)拥有可以登录并执行代码的用户。这不好看吗?让我们仔细看看。

如果把一切都当成“用户”,我们就会有:使用终端或图形界面登录的人。

像邮件或者web服务器这种系统服务也会以“users”的身份运行,例如nginx可以以httpd用户运行。在服务器上经常会有多人共享一个管理员账号用来SSH登录(例如,亚马逊的Ubuntu虚拟机默认SSH账号就是‘ubuntu’)root 身份,和上面其他身份都不同。

以上四个概念几乎不同,但都是POSIX上的“用户”。我们马上会看到,将这些概念称为“用户”会导致许多安全问题。

在操作上,由于POSIX用户模型的边界,我们甚至找不到一种方法来说“只有Alice和Bob可以通过这个账号登录”。

SaaS服务提供商没有“用户”

Jeremy Green最近发了一篇关于用户模型在SaaS的应用的推文,这让我第一次想起写这篇文章。他的基本观点是,SaaS服务几乎总是:

某个组织中的一个人支付服务费用。一个或多个人共同使用这个服务。

如果一开始就把这些人当成用户,就会陷入痛苦的世界。你不能建立一个团队模式,你不能建立一个同时为多人付费的模式,然后你就会开始改造你的系统。既然你已经从SaaS事件中吸取了教训,让我们来看看你的生活。

但这只是众多例子中的一个:“用户”的概念太模糊了。如果你开始怀疑“用户”这个词,你可能最终会发现你其实只需要两个概念:团队(用来组织关系和支付)和成员(服务的实际用户)。

“用户”是一个安全问题

“用户”这个词不仅仅是一个业务逻辑的问题,还会导致一系列的安全问题。“用户”这个词非常模糊,它从根本上结合了两个概念:

一个人。他们在软件中的代表性。

为了说明这个问题,假设您正在访问一个不怀好意的网站,其服务器上的图片导致您的浏览器内存溢出。远程网站控制您的浏览器,并开始将您的文件上传到他的服务。它为什么能做到这一点?

因为浏览器是作为系统用户运行的,所以被认为和你作为人类是一样的,但实际上你是不一样的。作为“用户”,你不想上传文件。但是系统的账号也是‘用户’,可以上传文件。如果浏览器运行在你的账号下,他的所有行为都会被视为你的意图,也就是说,是你要求它这么做的,其实不是。

这就是所谓的困惑剥夺问题。如果你用“用户”这个词来形容两个根本不同的东西,那么这个问题更有可能是你红豆博客计划的一部分。

预设计的价值

花更少的时间处理同样的问题是成为一个高效程序员的关键。用“用户”这样模糊的概念来组织你的软件,会耗费大量的时间和精力来解决未来的问题。从一开始,编码似乎是富有成效的,但事实恰恰相反。

下次你开始一个新的软件项目时,花几个小时预先定义你的术语和概念:你仍然不会完全正确,但你会做得更好。将来你会感谢你所有的废物预防工作。

原文:http://t.cn/Eau2d0h


(责编:admin)

分享让更多人看到