擁有允許您訪問網站上任何用戶帳戶以獲取支持的密碼是否違反安全慣例?密碼將以安全的方式存儲,並且會非常複雜。大錯誤?
擁有允許您訪問網站上任何用戶帳戶以獲取支持的密碼是否違反安全慣例?密碼將以安全的方式存儲,並且會非常複雜。大錯誤?
這聽起來很像一個“管理員”帳戶,否則通常可以不受限制地訪問它作為管理員的內容。
管理員帳戶的安全隱患是很容易理解的,因為是最佳做法。我不會詳細介紹所有細節,但是您的實現會在一個關鍵功能(可追溯性)上偏離最佳實踐。
您想知道誰做了什麼,尤其是關於管理員。如果管理員可以使用他的密碼登錄到我的帳戶,那麼審核員將無法事後確定我是做什麼的,而不是管理員是做什麼的。
管理員使用他的超級安全密碼登錄到自己的OWN帳戶,然後通過他通過自己的帳戶進行的訪問執行我也可以執行的某些操作-那麼現在我們可以看到一個日誌,告訴誰做了什麼。當糞肥碰到風扇時,這是很關鍵的。甚至更重要的是,當一個管理員帳戶遭到入侵時(儘管您盡了最大努力,它也會會)。
此外,請說業務增長了,您需要2個管理員。他們共享超級密碼嗎?不不不。他們倆都有自己的管理員帳戶,分別具有跟踪和日誌記錄功能。現在,您可以告訴WHICH管理員做了什麼。而且,最重要的是,當您解僱一名竊取甜甜圈的管理員時,您可以關閉其中一個帳戶。
到目前為止,在給出的答案中有很多有用的信息,原始的發帖人應該閱讀並記住。但是,我認為大多數答案並沒有抓住問題的實質,因為該問題與出於支持目的“像他們是用戶一樣”遍歷其公司的網站有關。問題的核心似乎在於此活動發生在網站的前端而不是服務器的控制台。
我知道一家公司在Web應用程序中也有同樣的需求,我已經以某種方式解決了該問題,我相信這是原始海報所尋找的解決方案。
他們在Web應用程序中創建了一個“假面舞會”系統,該系統允許特殊組中的員工輸入一組頁面,這些頁面可以查找系統中的任何用戶,然後選擇該用戶作為憑據來瀏覽系統配合。它跟踪選擇要偽裝的用戶和實際僱員用戶為兩個單獨且同時存在的實體,這兩個實體始終記錄在每個動作中。
從應用程序的角度來看,這是“以我這個用戶的身份對待我,但請記住我實際上是另一個用戶”。
此方法:
是的,這是一個錯誤。如果攻擊者設法保留了該密碼,無論您認為多麼安全,該怎麼辦?他將能夠以一種極有可能與正常活動區分開的方式篡改用戶帳戶信息。
如果您控製網站,則您已經可以使用多種方法來獲得支持選項。可以編寫適當的管理工具來讀取和修改必要的信息。擁有“主”密碼並沒有多大意義。
此“神”密碼等效於root /管理員訪問權限:可以執行所有操作。問題是雙重的:
具有某種“可以做所有事情”的訪問方式是一個好主意嗎?實際上,它比“好”更“不可避免”,但是是的,這是正常的事情。但是,請確保有適當的使用過程:您不希望管理員從咖啡店的共享計算機上進行管理;而您想知道“誰不知道”。從這個意義上講,當有兩個或多個具有管理員特權的人時,最好是他們作為管理員 group 的成員“作為自己”(在Unix世界中,使用 sudo
,以便記錄命令)。
讓管理員通過普通用戶API 行使權限是個好主意嗎?這是值得商bat的。允許“上帝密碼”意味著在整個應用程序中安裝“上帝例外”,這有被濫用的風險。它增加了站點中身份驗證+授權系統的複雜性,而復雜性是您在安全性方面要避免的一件事。錯誤在復雜性中蓬勃發展。 “上帝密碼”在開發過程中可能很方便,但是通常來說,它傾向於增加破壞性安全漏洞的可能性,因此使用時要格外小心。
當然,上下文是一切,上面的答案通常通常適用。不過,請警惕管理後門,尤其是後門,這些後門不能很好地記錄管理請求的來源。
管理員仍然只能扮演自己的角色:具有上帝密碼的人可以模擬系統上的任何人。有人可能會爭辯說,如果管理員擁有足夠的權力,那麼用這個帳戶限制攻擊者可能造成的實際損失並沒有多大作用。但是,使用上帝密碼的攻擊者可以更輕鬆地掩蓋自己的足跡。
擁有“上帝”密碼是一個簡單的解決方案,但是它僅是通過了解主密碼而獲得的“授權”,並不適合進行良好的訪問管理(即控制誰可以做到) (誰確實做了什麼)。
相反,更改您的憑據數據結構以具有有效用戶字段:
{用戶:alice,effective_user:bob,}
應該為 effective_user
呈現網頁的內容,除非它是一個內部管理頁面,需要知道誰是真正的瀏覽。請注意,大多數瀏覽您網站的外部用戶在兩個字段上始終具有相同的ID:
{用戶:alice,有效用戶:alice,}
此安排可以使您更好地控制允許誰成為另一個用戶,還可以使您記錄/審核誰代表誰做了什麼。 (您可以簡單地在您要監視的內容上同時記錄user和effective_user。)如果您查看定義過程的源,Unix會在內部執行這種有效的用戶(和組)事務。在網上模仿這一點是利用已知的成功範例。
此解決方案還使您可以選擇員工可以“翻身”另一個用戶的頁面。您可以選擇編寫一個不基於 effective_user
呈現的頁面,即使您的員工有權更改其有效用戶ID,也無法看到該頁面。
順便說一句,我已經在網絡上實現了有效的用戶概念,並且還實現了上帝密碼。當所有基礎結構均已就緒時,可以輕鬆插入後者。但是,就知道誰做了什麼和管理訪問而言,這實際上不是最佳的解決方案。仔細研究添加有效用戶字段實際上涉及多少重構,它可能比您想像的要少。
您永遠不會冒充用戶。 (由於其他已經提到的可追溯性/問責制的各種原因。)
相反,您查看的是用戶屏幕屏幕的副本,就像您站在他們後面看著他們的肩膀一樣。
這就是屏幕/桌面共享工具,例如VNC,TeamViewer,遠程協助等。
如果只有一個人可以訪問,那麼這不一定是問題,但是可以通過對允許該訪問的用戶帳戶進行設置來輕鬆實現。
使用任何根用戶/ superuser / admin這種功能,對行為進行記錄和審核至關重要,這意味著您需要知道誰在做什麼。如果多個用戶需要能夠進行這樣的更改,則應在其帳戶上標記為允許該更改。
您可能仍希望擁有一個額外的,更複雜的密碼,該密碼必須為即使他們有權訪問,也要輸入此密碼,但是在進行這種性質的操作之前,您應該要求對進行更改的個人進行安全身份驗證。
您可能別無選擇,只能輸入“上帝”密碼。不管tylerl關於擁有兩個不同的管理員密碼的說法是什麼,除非有人也負責,否則怎麼可能會有日誌和跟踪記錄?從字面上看,您必須對日誌和所有內容進行加密,以使它只能被外界讀取,但仍然可以自行寫入。它如何確定接收到的信息是否合法?顯然,如果您沒有訪問權限,那麼沒人會這樣做,也將不起作用。
我認為您需要具有基於角色的安全性,而不是具有“神”模式功能的帳戶。這樣,您可以讓多個具有相同角色的人具有相似的功能,這樣,如果您的上帝/管理員不可用,其他人可以進行修復。
我知道這是首選如果您要接受審核。