日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

當你意識到你在項目開始時做的輕量、簡單的設(shè)想竟然完全錯了時,你已經(jīng)用了六個月的時間投入到這個項目上。

現(xiàn)在你需要解決這些問題,才能讓這個系統(tǒng)繼續(xù)運行下去,你發(fā)現(xiàn)你用在這個項目上的精力遠遠超出了你的預期,如果一開始就用正確的方式來做,就不會發(fā)生這樣的事。

永遠不要在代碼中使用“User”這個單詞

 

今天,我要告訴你的是一個經(jīng)常犯的錯誤,一個會給你帶來無窮無盡的問題的單詞,那就是“users”。

這個單詞有兩個最基本的錯誤:

  1. 對你的需求來說 “User” 幾乎從來都不是一個好的描述。
  2. “User” 會導致一個基本的設(shè)計安全缺陷。

“user” 的概念是模糊不清的,使用更精準的術(shù)語幾乎總是能起到更好的效果。

你沒有使用者

最開始,沒有任何一個軟件系統(tǒng)真的有使用者存在。乍一看“user”是一個好的描述,但是你稍微一想就會意識到你的業(yè)務(wù)邏輯實際上比這要復雜的多。

我會使用三個例子,從一個極端的情況出發(fā)。

機票預訂系統(tǒng)沒有“users”

我曾經(jīng)給機票預訂系統(tǒng)寫過訪問控制邏輯,下面只是一小部分需求:

  • 旅客可以使用預定記錄碼通過網(wǎng)站查看預定信息。
  • 購買者可以通過信用卡號后四位數(shù)在網(wǎng)站上修改預訂信息。
  • 旅行社可以查看和修改他們的預訂。
  • 航空公司的值機人員可以根據(jù)角色和航空公司來查看和修改預訂信息,這需要旅客提供身份信息。

不再一一列舉。一些與人類相關(guān)的基本概念是“旅客”,“代理”(網(wǎng)站也可是看作代理)和“購買者”。“user”這個概念根本沒用,并且在許多請求中我根本不會使用這個單詞,舉個例子,我們的請求必須包括旅客和代理人的證件,而不是使用者的證件。

Unix 沒有 “users”

我們看一個不太一樣的例子。Unix (這些天被稱為POSIX)有用戶,他們可以登錄并執(zhí)行代碼。這樣看起來很不錯吧?我們深入看一下。

如果我們把所有都當作“users”的話,我們將會有:使用終端或者圖形界面登錄的人

  • 像郵件或者web服務(wù)器這種系統(tǒng)服務(wù)也會以“users”的身份運行,例如Nginx可以以httpd用戶運行。
  • 在服務(wù)器上經(jīng)常會有多人共享一個管理員賬號用來SSH登錄(例如,亞馬遜的Ubuntu虛擬機默認SSH賬號就是‘ubuntu’)
  • root 身份,和上面其他身份都不同。

上面四個是幾乎不同的概念,但是在POSIX上他們都是 “users”. 一會兒我們就會看到,把這些概念都稱為‘user’會導致很多安全問題。

在操作上,因為POSIX的用戶模型邊界存在,我們甚至不能找到一種方式說“只能讓 Alice 和 Bob 通過這個賬號登錄”。

SaaS 服務(wù)提供商沒有 “users”

Jeremy Green 最近就用戶模型在SaaS中的應(yīng)用在推特上發(fā)文,它第一次提醒了我寫下這篇文章,他的基本觀點是SaaS 服務(wù)幾乎總是:

  1. 某個組織中的一個人支付服務(wù)費用。
  2. 一個或多個人共同使用這個服務(wù)。

如果你一開始就把這些人作為一個用戶,你將會陷入一個痛苦的世界。你無法建立團隊模型,你無法組建同時為多人支付的模型,然后你就會開始改造你的系統(tǒng)。現(xiàn)在你在SaaS案例中學到了一課,我們來看一看你的生活。

但是這只是眾多例子中的一個:“users”的概念太模糊了。如果你開始懷疑“user”這個詞,最終你可能發(fā)現(xiàn)最終你其實只需要兩個概念:團隊(用來組織關(guān)系和支付)和成員(實際使用服務(wù)的人)。

“Users” 是一個安全問題

“user” 這個單詞不僅是業(yè)務(wù)邏輯的問題,它也導致了一系列安全問題。“user” 這個單詞如此的模糊以至于從根本上將兩個概念合并了:

  • 一個人。
  • 他們在軟件中的代表性。

為了說明這個問題,假設(shè)你正在訪問一個居心不良的網(wǎng)站,在它服務(wù)器上的圖片導致了你的瀏覽器內(nèi)存溢出。遠程網(wǎng)站控制著你的瀏覽器,并且開始將你的文件上傳到他的服務(wù)上。為什么它能這樣做?

因為瀏覽器是以系統(tǒng)用戶的身份運行的,它被認為與人類身份的你相同,實際上你們是不同的。 你作為’user’,不想上傳文件。但是系統(tǒng)的賬號也是‘user’,能夠上傳文件,如果瀏覽器運行在你的賬號之下,他所有的行為會被當作是你的意圖,也就是說是你讓它這么做的,實際上不是。

這就是被稱為Confused Deputy的問題。如果你使用“用戶”這個詞來描述兩個根本不同的東西,那么這個問題就更有可能成為你設(shè)計的一部分。

前期設(shè)計的價值

花更少的功夫處理相同的問題是成為高產(chǎn)程序員的關(guān)鍵。使用模糊不清的概念比如“用戶”來組織你的軟件,將會話費大量時間和精力來解決未來發(fā)生的問題。一上來就開始編碼看起來是高產(chǎn)的,事實恰好相反。

下次你開始一個新的軟件項目時,花幾個小時預先確定你的術(shù)語和概念:你仍然不會完全正確,但你會做得更好。未來的你將感謝你所做的所有預防浪費的工作。

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

分享到:
標簽:代碼
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定