"); //-->
现在你需要解决这些问题,才能让这个系统继续运行下去,你发现你用在这个项目上的精力远远超出了你的预期,如果一开始就用正确的方式来做,就不会发生这样的事。今天,我要告诉你的是一个经常犯的错误,一个会给你带来无穷无尽的问题的单词,那就是“users”这个单词有两个最基本的错误:
最开始,没有任何一个软件系统真的有使用者存在。乍一看“user”是一个好的描述,但是你稍微一想就会意识到你的业务逻辑实际上比这要复杂的多。我会使用三个例子,从一个极端的情况出发。机****预订系统没有“users”我曾经给机****预订系统写过访问控制逻辑,下面只是一小部分需求:
不再一一列举。一些与人类相关的基本概念是“旅客”,“代理”(网站也可是看作代理)和“购买者”。“user”这个概念根本没用,并且在许多请求中我根本不会使用这个单词,举个例子,我们的请求必须包括旅客和代理人的证件,而不是使用者的证件。
Unix 没有 “users”我们看一个不太一样的例子。Unix (这些天被称为POSIX)有用户,他们可以登录并执行代码。这样看起来很不错吧?我们深入看一下。如果我们把所有都当作“users”的话,我们将会有:
上面四个是几乎不同的概念,但是在POSIX上他们都是 “users”. 一会儿我们就会看到,把这些概念都称为‘user’会导致很多安全问题。在操作上,因为POSIX的用户模型边界存在,我们甚至不能找到一种方式说“只能让 Alice 和 Bob 通过这个账号登录”。
SaaS 服务提供商没有 “users”Jeremy Green 最近就用户模型在SaaS中的应用在推特上发文,它第一次提醒了我写下这篇文章,他的基本观点是SaaS 服务几乎总是:
如果你一开始就把这些人作为一个用户,你将会陷入一个痛苦的世界。你无法建立团队模型,你无法组建同时为多人支付的模型,然后你就会开始改造你的系统。现在你在SaaS案例中学到了一课,我们来看一看你的生活。但是这只是众多例子中的一个:“users”的概念太模糊了。如果你开始怀疑“user”这个词,最终你可能发现最终你其实只需要两个概念:团队(用来组织关系和支付)和成员(实际使用服务的人)。
“Users” 是一个安全问题“user” 这个单词不仅是业务逻辑的问题,它也导致了一系列安全问题。“user” 这个单词如此的模糊以至于从根本上将两个概念合并了:
为了说明这个问题,假设你正在访问一个居心不良的网站,在它服务器上的图片导致了你的浏览器内存溢出。远程网站控制着你的浏览器,并且开始将你的文件上传到他的服务上。
为什么它能这样做?因为浏览器是以系统用户的身份运行的,它被认为与人类身份的你相同,实际上你们是不同的。你作为’user’,不想上传文件。但是系统的账号也是‘user’,能够上传文件,如果浏览器运行在你的账号之下,他所有的行为会被当作是你的意图,也就是说是你让它这么做的,实际上不是。这就是被称为Confused Deputy的问题。如果你使用“用户”这个词来描述两个根本不同的东西,那么这个问题就更有可能成为你设计的一部分。
前期设计的价值花更少的功夫处理相同的问题是成为高产程序员的关键。使用模糊不清的概念比如“用户”来组织你的软件,将会话费大量时间和精力来解决未来发生的问题。一上来就开始编码看起来是高产的,事实恰好相反。下次你开始一个新的软件项目时,花几个小时预先确定你的术语和概念:你仍然不会完全正确,但你会做得更好。未来的你将感谢你所做的所有预防浪费的工作。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Bourns 全新推出可提供 ESD 保护弹性的 TVS 二极管系列,采用节省空间的 DO-214AB 封装
模糊控制在基于CAN总线的数据采集与控制系统中的应用
面向高分辨率面阵CCD的新型信号采集系统设计
模糊控制在尾砂胶结充填过程控制中的应用
HM9902触摸式二态调光灯电路
全新上市!Bourns全新推出高精度功率电阻
给朋友们推荐一个安静的地方过\"五一\"
株洲中车时代电气杨艳荣获2025 IPC手工焊接全球总决赛冠军
HM9901触摸式步进调光灯电路
intel pxa255 开发请教
中国MTC实现了DFB光子芯片小批量出货
三菱FX系列PLC教程 68 —— FX系列的特殊定时器指令
HM9900触摸式延迟熄灯电路
三菱FX系列PLC教程 69 —— FX系列的斜波信号输出指令
[转帖]上门送货方正神机妙算红狗光联达管家婆有理星海地
三菱FX系列PLC教程 67 —— FX系列的示教定时器指令
节省空间的3U数字式10kW电源,电压可达100kV
简单制胜——第一部分:深入探讨BMS中的主动均衡
[转帖]上门送货方正神机妙算红狗光联达管家婆有理星海地
三菱FX系列PLC教程 70 —— FX系列的旋转工作台指令
HT7713触摸式步进调光灯电路
黑芝麻智能科技采用Arteris技术,助力新一代智驾芯片
模糊自动加药监控系统的开发与应用
安塞米与中国Innoscience合作开发低/中压氮化镓样
HT7700触摸式无级调光灯电路
面向运动图像远程实时传输的H.263压缩方法的分析与优化
QNX携手地平线,共同助力中国主流汽车制造商打造智能驾驶解决方案
给大家推荐一个非常好的电子开发的网站--http://www.ee5200.com
德与施瓦茨凭借CMP180无线通信测试仪助力MediaTek完成6G波形验证
三菱FX系列PLC教程 71 —— FX系列的带锁存的七段显示指令