新闻资讯
码农科技带您获取广西更多IT项目、新闻、政策、科技信息
2019
06-10
行业动态
打印
永远不要在代码中使用“USER”这个单词
编辑: 码农科技 来源: 程序猿

永远不要在代码中使用“User”这个单词

发布人: 码农科技     发布时间:2019-06-10     文章来源: 程序猿
 

 

当你意识到你在项目开始时做的轻量、简单的设想竟然完全错了时,你已经投入了六个月的时间在这个项目上。现在你需要解决这些问题,才能让这个系统继续运行下去,你发现你用在这个项目上的精力远远超出了你的预期,如果一开始就用正确的方式来做,就不会发生这样的事。

 

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

 

这个单词有两个最基本的错误:

 

1、对你的需求来说 “User”几乎从来都不是一个好的描述。

2、“User” 会导致一个基本的设计安全缺陷。

 

“User” 的概念是模糊不清的,使用更精准的术语几乎总是能起到更好的效果。

你没有使用者

 

最开始,没有任何一个软件系统真的有使用者存在。乍一看“User”是一个好的描述,但是你稍微一想就会意识到你的业务逻辑实际上比这要复杂的多。

 

我会使用三个例子,从一个极端的情况出发。

机票预订系统没有“User”

 

我曾经给机票预订系统写过访问控制逻辑,下面只是一小部分需求:

 

  • 旅客可以使用预定记录码通过网站查看预定信息。

  • 购买者可以通过信用卡号后四位数在网站上修改预订信息。

  • 旅行社可以查看和修改他们的预订。

  • 航空公司的值机人员可以根据角色和航空公司来查看和修改预订信息,这需要旅客提供身份信息。

 

不再一一列举。一些与人类相关的基本概念是“旅客”,“代理”(网站也可是看作代理)和“购买者”。“User”这个概念根本没用,并且在许多请求中我根本不会使用这个单词,举个例子,我们的请求必须包括旅客和代理人的证件,而不是使用者的证件。

Unix 没有 “User”

我们看一个不太一样的例子。Unix (这些天被称为POSIX)有用户,他们可以登录并执行代码。这样看起来很不错吧?我们深入看一下。

 

如果我们把所有都当作“User”的话,我们将会有:

 

  • 使用终端或者图形界面登录的人

  • 像邮件或者web服务器这种系统服务也会以“User”的身份运行,例如nginx可以以httpd用户运行。

  • 在服务器上经常会有多人共享一个管理员账号用来SSH登录(例如,亚马逊的Ubuntu虚拟机默认SSH账号就是‘ubuntu’)

  • root 身份,和上面其他身份都不同。

 

上面四个是几乎不同的概念,但是在POSIX上他们都是 “User”。 一会儿我们就会看到,把这些概念都称为“User”会导致很多安全问题。

 

在操作上,因为POSIX的用户模型边界存在,我们甚至不能找到一种方式说“只能让 Alice 和 Bob 通过这个账号登录”。

SaaS 服务提供商没有 “User”

Jeremy Green 最近就用户模型在SaaS中的应用在推特上发文https://twitter.com/jagthedrummer/status/1037812206602252291,它第一次提醒了我写下这篇文章,他的基本观点是SaaS 服务几乎总是:

 

  1. 某个组织中的一个人支付服务费用。

  2. 一个或多个人共同使用这个服务。

 

相关内容
柳州市智慧环保(一期)项目信息
通过建设此项目,实现现有业务系统的数据共享整合,挖掘生态环境数据潜在价值,实现生态环境管理的精细化、智能化,为构建柳州市现代化生态环境治理体系奠定基础。
广西永福县智慧消防建设项目信息
为提升永福县永福县现代化火灾防控水平,最大限度地保障人民群众生命财产安全,创造社会经济发展长治久安的消防安全环境,同意实施永福县智慧消防建设项目。
广西煤炭工业互联网平台项目招标信息
新建广西煤炭工业互联网平台,平台包含六个子平台,分别是:行业监管平台、行业赋能平台、用煤企业赋能平台、产煤企业赋能平台、煤化工企业赋能平台、大数据可视化平台。如需进一步了解详细内容,详见招标文件。
广西加快数字乡村发展行动计划
数字乡村是乡村振兴的重要支撑,也是数字广西建设的重要板块。为贯彻落实《中共中央、国务院关于实施乡村振兴战略的意见》、《数字乡村发展战略纲要》和我区关于加快数字广西建设系列文件精神,促进互联网、云计算、大数据、人工智能等新一代信息技术与乡村经济发展深度融合,开创新时代城乡融合新格局,特制定本行动计划。
教学诊改中校长应该怎么做?
教育部明确了实施教学工作诊断与改进的主体是学校自身,同时也指出,教学诊改不是一次活动,而是作为提高教学质量的一种策略、一个手段,贯穿学校教育活动始终,覆盖学校工作的方方面面。由此可见,教学诊改是一项涉及面广、业务性强、持续开展,且与先前教学常规融为一体的新常态,因此职业院校校长的角色行为至关重要。
百色市投资5.84亿建设百色市城市大脑暨数字经济产业园
百色市投资5.84亿建设百色市城市大脑暨数字经济产业园
广西多家医院开建,医院信息化商机年末掀起高潮
广西多家医院开建,医院信息化商机年末掀起高潮
第4届中国-东盟信息港论坛2020年11月26日-28日将在南宁举办
本届论坛由自治区互联网信息办公室、大数据发展局、发展和改革委员会、工业和信息化厅、商务厅、通信管理局、投资促进局和中国—东盟博览会秘书处承办,包括1个主论坛和5G网络建设与应用论坛、人工智能峰会、电子商务论坛、北斗应用与产业发展合作论坛、鲲鹏数字新生态产业论坛、人工智能文化教育发展论坛、数字丝路产业合作论坛7个分论坛,此外,还将举办中国-东盟数字技术展览。
宁明县综合档案馆建设项目弱电智能化项目
宁明县综合档案馆建设项目弱电智能化项目
岁末年初,浪潮华为产业相继落户广西
岁末年初,浪潮华为产业相继落户广西