最終用戶計算安全——特權訪問控制

? ?本篇算是系列的第二篇,之前寫了一篇關于勒索軟件攻擊的,坦白說寫這樣的文很費腦子,而且喜歡看的讀者估計也不多…不過我覺得整理一下思路,對于通過最終用戶計算產品或方案來提升組織安全還是有很大的意義的。所以一邊喝著清茶吃著月餅,一邊還是花了些時間畫圖寫文,篇幅不短,希望您看完之后覺得有用,順手點個贊~

? ?雖然聊到安全的話題比較晦澀,不是那么的酷炫,但隨著IT技術滲透到工作生活的方方面面,安全其實和每個人又都息息相關。特別是IT從業者,不論是對自己設備和系統,還是對更廣闊的數據中心基礎架構和云平臺,管理(監視、維護和操作)是我們每天都要對IT系統做的事情。與此同時,管理也引入了可能存在的最大的風險——因為執行這些工作需要對非常廣泛的系統和應用進行必要的特權訪問。而攻擊者知道,一旦獲得管理權限,就足以訪問要針對的大多數甚至全部的信息數據。所以,管理的安全是安全領域中最為關鍵的部分之一。

636ceff3300015ab70d85ed004e2973c.png

? ?這也可以通過常見的攻擊鏈得到印證。如上圖,通過對最終用戶行為、使用的端點設備以及對IoT(和OT)系統的攻擊,大多都是為了后續攻擊特權,而一旦拿到特權之后,就進入了造成損失的后續環節。

特權訪問管理

? ?我們在聊管理安全的時候,基本上會有這樣的共識,不能因為安全風險而因噎廢食,放棄管理以及管理效率。而是應該尋求滿足管理需求的同時,降低風險。也就是對特權訪問進行有效的控制。具體做法可以包含三部分:

? ?限制范圍——規定管理操作所需要的最小權限(JEA,Just Enough Access)。而不是由于管理角色一次對多個或所有系統擁有權限。

? ?限定時間——規定何時需要提供所需的特權(JIT,Just In Time)。而不是在所有時間內提供系統的權限。

? ?緩解剩余風險——結合預防和檢測控制來降低風險。有非常多的最佳實踐可以在各個環節提前預防和可被檢測到風險。

? ?記憶起來其實很容易,跟“雙規”的描述很像:規定時間,規定范圍,緩解風險。那有哪些做法是比較推薦的呢?一起來看看特權訪問管理里的建議。

? ?1、最大限度減少管理員數量

? ?每個管理賬戶都是潛在的攻擊目標,因此減少管理權限賬戶數量能夠有效的減小攻擊面,降低整個組織面對的風險。人們總是會為需要訪問資源謀求獲得更高的管理權限,隨著時間推移往往特權賬戶會不斷增長。最佳做法是為涉及業務連續的系統分配兩個賬戶,每一個特權賬戶的設置都應提供理由及使用審批流程,定期審核查看每個特權組成員身份和理由,及時關閉或禁用不需要的特權賬戶。

? ?2、管理特殊的特權賬戶

? ?確保所有的特權賬戶處于組織的管理策略之下。對于云服務,以Azure為例,不應使用類似MSA的賬戶,只有依托Azure AD等標識平臺才能夠確保組織的管理策略和政策法規遵從得到遵守。需要注意因為使用服務而建立的服務賬戶,以及為了項目建設和云平臺遷移使用的供應商賬戶。服務賬戶往往繞開了需要定期更新的密碼管理策略,因此需要加強隔離,限制其范圍并做好全面的監控。供應商賬戶應在項目交付時即予以禁用,在確認項目上線之后進行刪除。

? ?3、分離日常工作賬戶和特權賬戶

? ?大部分對特權賬戶的攻擊,都是從獲得日常工作賬戶信息開始的——因為日常工作賬戶難免使用工作效率工具,例如電子郵件、文件共享、訪問網站等等。最基本的做法是工作賬戶不能用于特權訪問。實際上,在Windows系統里,很久以前就提供了UAC用戶訪問控制來限制使用管理賬號憑據直接對系統進行有風險的操作。當然,如果更進一步,在工作賬戶使用的系統上(例如桌面環境)根本不出現特權賬戶是更加安全的做法。這樣即使工作賬戶所在系統被攻擊,攻擊者也無法獲知特權賬戶信息或竊取特權賬戶憑據。基本的做法可以使用瀏覽器隱私模式打開特權訪問、不保存特權賬戶密碼、不使用特權賬戶在本機登錄等等。更好的做法是利用VDI之類的遠程訪問系統,通過SSO實現特權訪問,這樣本地就不會有任何特權訪問的信息。

? ?4、減少常設特權訪問權限

? ?沒有永遠安全的系統。永久的特權會給攻擊者更多基于時間的機會。盡管我們已經熟知通過限制登錄嘗試來阻止攻擊者對標識的暴力破解,但仍不能避免攻擊者通過其他途徑獲得提升權限的憑據。因此,如果系統能夠支持JIT的特權授予,例如Azure AD的PIM或第三方IDM方案,應盡快啟用,使得特權訪問能夠基于管理策略和審批工作流來獲得。特權訪問應盡可能的基于角色,而不應不受控制的粒度細化、出現大量自定義權限。應盡可能使用內置角色,并對特權賬戶進行生命周期管理。

? ?另一方面,啟用MFA多因素認證是安全的良好做法。但應準備好緊急訪問的特權賬戶機制,以避免正常管理訪問方式不可用的情況發生。該賬戶不應與任何個體用戶賬戶關聯,并切不關聯到任何個人信息(例如電話、分配到人的令牌或其他憑據),且應該啟用強身份驗證。應從基于電話的MFA和條件訪問策略中排除至少一個緊急訪問賬戶,避免電話系統或條件訪問出現問題時仍可訪問。同時,應安全的保存賬戶憑據,例如將密碼分開保存到安全的位置(是不是想起了大片里發射核導彈要同時插入兩把鑰匙?),監視登錄并審核日志,以及定期驗證賬戶。

? ?5、增強特權賬戶驗證

? ?對所有關鍵影響管理員啟用無密碼或多因子驗證。密碼已經無法可靠的保護賬戶,因此依次可以考慮使用無密碼登錄(比如生物驗證、Windows Hello)、驗證應用App和多因子驗證來保護特權賬戶登錄。

? ?基于零信任的管理策略,需對所有特權訪問啟用條件訪問。這篇文章并不打算展開討論零信任,但基于設備完整度要求以及指定工作網絡發起訪問等,都是常見的條件訪問策略。可通過已經比較成熟的統一端點管理(UEM)系統和面向端點的防御(例如Defender ATP)等提供保障。

? ? 6、使用特權訪問工作站

? ?廣義上應該叫做特權訪問設備。鑒于很多生產力應用基于PC,所以看到的設備作為特權訪問工作站會多一些。我們的主題是最終用戶計算方面的特權訪問控制,因此特權訪問工作站(PAW,Privileged Access Workstation)會是接下來討論的重點。

特權訪問控制

? ?參照微軟文檔的建議,按照不同的安全需求,對組織數據資產的訪問可以大致分為三類,下表顯示了部分配置上的差異(更完整的可參考特權訪問控制實現)。

配置文件企業專用特權
端點管理
拒絕BYOD設備注冊
應用端點管理安全基線
Defender for Endpoint是*
通過Autopilot加入個人設備是*是*
限制為經批準的URL允許大多數允許大多數拒絕默認值
刪除管理員權限
應用程序執行限制
審核->強制
僅由端點管理安裝應用

? ?簡單來說這三種設備角色的定義可以如下簡述:

? ?企業設備。該托管角色適用于家庭用戶、小型企業用戶、一般開發用戶及希望維持最低安全標準的組織。對應的配置文件允許用戶運行任何應用程序并瀏覽任何網站,但需要部署反惡意軟件及終結點檢測和響應(EDR,Endpoint Detect & Response)方案。它提供了一種安全的方式來處理數據,以及使用電子郵件和Web瀏覽等工作效率工具。

? ?專用設備。該托管角色表明組織向安全邁出重要一步,刪除了自管理工作站的功能,并限制只能運行由授權管理員安裝的那些應用程序(程序文件和用戶配置文件)。專用設備用戶需要一個更加受控的環境,同時仍兼顧簡單地使用電子郵件和Wen瀏覽等工作效率工具,但不需要也不允許更改或調試設備的操作系統、安裝更改驅動程序或類似功能、隨意安裝應用程序等。

? ?特權訪問工作站。該托管角色為極其敏感所需最高安全配置設計。一旦使用特權訪問的帳戶遭到入侵,將對組織或生產產生重要影響。特權訪問工作站(PAW)配置包括安全控制及策略。控制和測略限制了本地管理訪問和生產效率工具,已將攻擊面降低為僅執行敏感作業任務的絕對要求。因此PAW設備變得更難入侵(例如限制電子郵件和Web瀏覽,減少了釣魚攻擊的最常見向量)。PAW設備會啟用憑據防護、設備防護、應用防護和攻擊防護保護系統,并將所有本地存儲都進行加密。除了特定允許的Web流量,其他的默認都將被拒絕。

? ?好了,我們現在有了縱向維度的區分,再來看看橫向維度的區分。實際上大多組織從用戶的端點設備訪問應用和數據的時候,會有這么幾個環節:用于發起訪問的設備,用于登錄和驗證權限的帳戶,為了避免直接訪問或解決連接的中介,以及最終訪問資源的界面。我們結合兩個維度來看一看示意圖。

b63d18d3c4079b45a8217822124d8b97.png

? ?因此,對特權訪問進行控制也同樣需要考慮如下四個方面:

? ?設備——特權用戶(如和IT管理員)登錄的設備可以授予攻擊者特權訪問權限

? ?帳戶——他們用于登錄的帳戶(通常通過竊取密碼或會話令牌,但也可能發生其他攻擊)

? ?中介——處理帳戶憑據或其他敏感元素,如VPN、特權身份管理/特權訪問管理(PIM/PAM)解決方案、應用程序代理、RDP/SSH跳板服務器等。

? ?接口——資源的用戶界面也可以直接受到攻擊,試圖獲得特權訪問

? ?這樣,就能夠對不同訪問需求在不同環節上的要求有著非常清晰的定義。為什么需要這樣做呢?讓我們看看從普通用戶訪問到特權訪問之間可能造成的攻擊路徑。

c56cbd5a8d132776251a031e0aa1dbad.png

? ?如上圖,普通用戶和特權帳戶都需要訪問組織的關鍵業務資產。如果沒有針對特權帳戶做額外的保護,一旦普通用戶訪問受到攻擊,攻擊就容易在多個方面橫向擴展到特權帳戶,例如基于普通用戶帳戶發起的對標識系統的攻擊、基于普通用戶帳戶獲得的權限提升等,最終導致更多更高價值目標的損失。

4e0d778158974dfd988f9b289d981d91.png

? ?可以看到,對于端到端四個主要環節(設備、帳戶、中介和接口)進行特權訪問防護,能夠有效地防止對特權訪問各環節的直接攻擊,也能夠有效地防止從普通用戶攻擊輕易的提升為具有特權訪問的攻擊。一方面特權訪問保護增加了攻擊難度和攻擊成本,一方面也降低了威脅程度和風險損失。? ?

特權訪問工作站

? ? 我們已經從比較理論的角度討論了對特權訪問進行防護的重要性,也將關注的重點轉移到了特權訪問工作站(PAW)。可以看到,特權訪問工作站的關注點與最終用戶計算實際緊密相關。那么結合企業統一設備管理和安全的遠程訪問,對特權訪問工作站的安全提升有多大的幫助呢?

? ?在開始討論這一話題之前,我們需要明確一點,特權訪問工作站從定義上,除了可以是硬件之外(適合進行端點管理),也可以是基于虛擬化的虛擬機(適合使用VDI等遠程安全訪問),還可以是兩者結合的特權訪問方式。

安全原則

? ?不如來看一個基于Workspace ONE體系的特權訪問體系架構。在該體系架構中應用了如下的安全原則:

? ?減少攻擊面;已考慮通過使用威脅檢測和情報來減少攻擊面。這是通過使用微分段和分布式防火墻保護邊緣和應用,并使用條件訪問策略根據用戶、位置或設備狀態提供安全控制來實現的。

? ?已應用最小特權原則,因此我們可以為用戶提供對應用程序的訪問權限,這些應用程序僅是執行其工作所需的。在完成必要的合規性檢查和身份驗證之前,每個用戶都被標識為威脅。

? ?清潔源原則已應用于工作站。使用已知的操作系統 (OS) 內部版本、修補程序級別和控制應用程序集以及安全基準和策略,意味著我們正在降低訪問應用程序的設備的安全風險。

? ?監控和威脅響應; 持續檢查設備狀態和漏洞掃描已包含在架構中,使用智能來提供對威脅的自動響應。

? ?應用程序安全級別用于定義應用程序訪問權限。可以向用戶提供一個完整的應用程序集,可以訪問非常高/高安全性的應用程序或有限的應用程序集和中/低安全性應用程序。根據設備是托管設備還是非托管設備,用戶可以訪問完整或受限的應用程序集。

? ?緩解橫向遍歷已自始至終被設計出來;例如,有權訪問低風險應用程序的用戶無法橫向遍歷以訪問高風險應用程序。這是通過使用不同的區域、不同的虛擬桌面/應用程序環境以及保護區域之間的流量來實現的。此原則允許將體系結構藍圖用于具有不同安全級別的不同層用戶,從 IT 管理員到第三方訪問權限。

? ?條件訪問是體系結構的基本元素,用于初始連接中確定是否允許設備訪問以及可以訪問哪個級別的應用程序。

架構概述

? ?特權訪問工作站的架構設計為使用區域來保護流量和訪問,滿足了一個區域的安全要求,流量才被允許進入下一區域。

0a865229b3180acdd22af093d4805c3d.png

? ?體系架構包含以下幾個邏輯區域:

  • 設備——類似前文的設備環節

  • 入口區域——盡管沒有直接對應,但這一區域會進行帳戶的驗證和授權

  • 中間區域——類似前文的中介環節

  • 安全區域——類似前文的接口環節

? ?我們來看一個非常常見的示例:遠程的用戶,通過傳統上認為比較安全的VPN(入口區域)連接到組織內網,然后經過例如基于AD驗證的網站等(安全區域)訪問組織的應用和數據。可以發現,這種方式無法對特權訪問進行有效的標識隔離,也無法防御一旦用戶收到攻擊之后對更高訪問權限的威脅。

c1d5e4e4b1e43a680639ff529c1e42c5.png

? ?經過疫情的考驗,越來越多的組織開始支持遠程工作方式或混合工作方式。通過應用虛擬桌面體系,實現了數據不落地的安全遠程訪問。在這個體系中,有效地阻止了從用戶端點發起的攻擊輕易進入組織網絡。但這就足夠嗎?顯然,這個架構還不足以阻止普通用戶被攻陷后對特權訪問的攻擊。

ad312ff5dd58a712490a95d80a4d4f7a.png

? ?如果將特權訪問進行明確的區分,就能有效的識別和隔離特權訪問與普通訪問了。那么如何自動識別基于不同設備、或者基于相同設備不同環境(例如網絡位置)的訪問呢?這就需要對訪問進行條件控制。

? ?除了條件訪問控制,還需要確保劃分開的普通訪問與特權訪問之間無法輕易的“打通”,即確保網絡上的隔離。

? ?對于基礎架構本身,也需要提供足夠的保護,推薦的做法是在不同目的的組件,例如連接組件、管理組件和業務組件之間也進行微分段隔離。這樣可以避免對底層架構的攻擊——以勒索攻擊為例,現在不僅僅針對文檔進行加密勒索,也出現了利用虛擬化層未修復漏洞或錯誤配置,對虛擬磁盤進行的加密攻擊。

e475c591111748f6073833eb9c2cfcd5.png

? ?現在,架構上已經進行了充分的加強以防御對特權訪問的攻擊。但對于更加嚴格的安全要求,可能仍然是不夠的。例如,我們仍需要在中間區域和安全區域之間進行嚴格的隔離;除了納管設備,仍需要對非納管設備(例如BYOD)進行防御。

6de1f33e228046913a5eed1d544036d5.png

? ? 因此,使用“兩跳”的方式在遠程訪問到任務桌面之后,再通過遠程訪問運行應用,中間區域到安全區域的隔離就得以實現了。同時,如果需要的話也可以對非納管設備進行更加精細化的管理,細分訪問場景的條件及對應的訪問安全策略。例如,當訪問發起時如果處于組織內部網絡,則允許使用基于證書(CBA)的驗證,而訪問如果處于外部網絡,則要求使用多因素驗證等。

0c8c5cec6471c97ff5cae3089d5fdaa3.png

? ?對于非納管設備,除了常見的準入條件,還可基于第三方的安全檢查(例如OPSWAT)作為準入控制。在實施了更為嚴格的網絡隔離和特權訪問劃分之后,還可以在特權訪問架構上增加其他的控制。例如,對于中間區域和安全區域使用不同的標識系統,利用類似活動目錄域的單向信任進行標識隔離;也可以在條件訪問控制環節使用異構標識或云標識(如Azure AD等),加上單點登錄(SSO)來避免標識過早暴露;還可以集成基于云的智能服務和受信任網絡以及病毒和威脅防范體系(如Carbon Black)來為端點防護和準入提供更加全面的保護,例如集成移動威脅檢測(MTD)、端點檢測及修復(EDR)等。

? ?好了,到現在為止,一個比較嚴格的特權訪問架構初具雛形。我們再來回顧一下各區域的劃分和防護手段的使用。

? ?在入口區域,可以針對訪問的端點設備啟用組件:統一端點管理、單次訪問控制(MFA/OTA)和集成第三方標識系統(身份提供程序,IDP)。此外還可以增加 Workspace ONE智能服務聚合統一端點管理 UEM和訪問控制 Access的數據,以及來自Carbon Black Cloud的數據,以評估用戶和設備的風險數據、實現自動響應并通知條件訪問。當然,如果不包括本地部署,也可以考慮集成Azure AD的條件訪問、多因素驗證等云服務等。

? ?除了啟用多因素驗證、基于網絡范圍的安全策略、基于證書的身份驗證(CBA,支持可回退或不可回退移動單點登錄)、基于設備合規性(任何平臺)甚至基于風險評分的策略,還可為身份驗證會話確定時間長度,即以前我們提到的 JIT,以便限制特權訪問憑據不受限制使用。

? ?在中間區域,組織可以為最為敏感的應用和數據啟用僅納管設備通過托管虛擬桌面進行訪問,也可以將普通辦公訪問也置于虛擬桌面保護之下,而通過基于身份驗證和條件訪問控制來區別普通訪問和特權訪問。此時,特權資源和非特權資源通過各自獨立的虛擬桌面和虛擬應用集合進行區分。

? ?通過可駐留在DMZ的統一訪問網關(UAG),訪問可大幅縮減范圍,例如減少需要暴露的IP和端口,利用UAG充當L7的代理等。從而大幅降低暴露的受攻擊范圍。

? ?而基于虛擬桌面、虛擬應用的安全遠程訪問體系,可為構筑在傳統安全架構上的業務系統提供更加貼近現代移動互聯網環境的安全管理能力。基于身份的分布式防火墻以及無代理病毒防護,以及基于標準化和快速制備的能力,能夠確保這一訪問架構的安全性和快速自愈能力。

? ?在安全區域,可以如同中間區域一樣,使用標準化,強制實施最小安全特權原則的安全遠程訪問方式。同時,利用統一訪問網關可實現基于第三方SAML的訪問控制和基于True SSO的單點登錄。用戶使用特權訪問的時候甚至可以不必使用傳統基于密碼的登錄,實現“無密碼”的訪問安全。

? ?同時,如果對安全區的訪問架構使用專門的活動目錄,在攻擊者嘗試進行標識攻擊時會更加難以獲得特權標識。這可以通過為虛擬桌面和虛擬應用配置雙向信任、單向信任甚至配置不受信任的域來實現。

? ?如同中間區域一樣,安全區域也可以通過動態環境管理(DEM)組件實現更加復雜的,基于用戶角色、訪問設備和位置的條件策略。這些策略可以實現強制的應用程序拒絕和允許列表(黑白名單)、使用標準用戶帳戶但在需要時為特定應用或進程提供集中控制的權限提升以及在會話間保留Windows系統和應用程序的配置信息等。

? ?除了我們介紹的借助Workspace ONE的這個架構例子,基于Microsoft或者第三方的方案或方案組合也可以參考這樣的架構模型,進行特權訪問控制的構筑和實現。不論特權訪問工作站是否基于Windows操作系統,基于Windows系統的傳統和現代管理方式,特權訪問實現的參考配置選項都可以作為特權訪問工作站管理的標準和依據。

傳統訪問模型與現代訪問模型

? ?關于特權訪問控制的討論已近尾聲。在最后還想花一點時間介紹傳統與現代企業訪問模型的差異。

4afba20c7121f878caddf379d4eb0a05.jpeg

? ?以微軟的架構為例,傳統訪問模型是基于AD活動目錄層模型的。零層(T0)是整個架構最為核心的基礎,包括例如AD的域控制器(DC)、證書服務(CA)、網絡服務(DNS等)等。一層(T1)包括成員服務器,即加入到域進行統一安全和配置管理的各類服務器,如應用服務、數據服務等。二層(T2)是各種服務端點,例如PC、打印機、各種終端等等。?

? ?很顯然,在移動化互聯網化的背景下,依靠持續可靠的、到活動目錄的網絡連接,以及來自互聯網的各種環境的訪問是傳統訪問模型難以支持的。所以需要將傳統模型轉進為現代模型。這包括以下的幾個變化:

  • 第 0 層范圍擴展

    第 0 層擴展為控制平面并解決訪問控制的所有方面,包括網絡(其中唯一/最佳訪問控制選項),例如舊版 OT 選項

  • 第 1 層拆分

    為了提高清晰度和可操作性,第 1 層現在分為以下幾個方面:

    • 管理平面 - 適用于企業范圍的 IT 管理函數

    • 數據/工作負荷平面 – 用于每工作負荷管理,有時由 IT 人員執行,有時由業務部門執行此拆分可確保重點用于保護具有高內部業務價值但技術控制有限的業務關鍵系統和管理角色。此外,這種拆分更適合開發人員和 DevOps 模型,而過于注重經典基礎結構角色。

  • 第 2 層拆分為了確保應用程序訪問以及各種合作伙伴和客戶模型的覆蓋范圍,第 2 層分為以下幾個方面:

    • 用戶訪問 - 包括所有 B2B、B2C 和公共訪問方案

    • 應用訪問 - 以適應 API 訪問路徑和生成的攻擊面 ? ?

b736c1d377c148c38dd27923fb9d23a6.png

? ?如上圖,雖然是一張比較平面的示意圖,請嘗試將各個平面層疊起來觀察。完成傳統訪問模型到現代訪問模型的這一轉變之后,可以看到核心的數據/工作負荷平面被管理平面所管理,并處于擴展的控制平面的控制下。而對資產的訪問被分為用戶訪問、應用訪問及特權訪問,從而實現了面向更復雜、更多種類的組織數據和應用的安全訪問保護。

? ?至此,關于最終用戶計算領域的特權訪問控制的討論就告一段落了。感謝您花費時間看完,如果文中涉及的架構建議和方案最佳時間能夠給您提升特權訪問安全提供參考,就算沒有白寫這么一大篇了。

參考鏈接:

[1] 特權訪問管理:https://docs.microsoft.com/zh-cn/security/compass/critical-impact-accounts?WT.mc_id=Azure-MVP-33253

[2] 特權訪問控制實現:https://docs.microsoft.com/zh-cn/security/compass/privileged-access-deployment?WT.mc_id=Azure-MVP-33253

[3] 特權訪問—設備:https://docs.microsoft.com/security/compass/privileged-access-devices?WT.mc_id=Azure-MVP-33253

[4] 特權訪問—帳戶:https://docs.microsoft.com/security/compass/privileged-access-accounts?WT.mc_id=Azure-MVP-33253

[5] 特權訪問—中介:https://docs.microsoft.com/zh-cn/security/compass/privileged-access-intermediaries?WT.mc_id=Azure-MVP-33253

[6] 特權訪問—接口:https://docs.microsoft.com/security/compass/privileged-access-interfaces?WT.mc_id=Azure-MVP-33253

[7] 特權訪問保護:https://docs.microsoft.com/zh-cn/security/compass/overview?WT.mc_id=Azure-MVP-33253

[8] 特權訪問體系架構:https://techzone.vmware.com/resource/privileged-access-workstation

[9] 特權訪問實現:https://docs.microsoft.com/zh-cn/security/compass/privileged-access-deployment?WT.mc_id=Azure-MVP-33253

[10] 企業訪問:https://docs.microsoft.com/zh-cn/security/compass/privileged-access-access-model?WT.mc_id=Azure-MVP-33253

(不想復制粘貼鏈接還可以點擊閱讀原文,博客文章鏈接正常)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282785.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MVC學習九:MVC 特性本質

一、特性的本質就是:對屬性、方法、類加特性,本質就是new 一個特性類對象賦值給屬性、方法、類。 可以通過反射的方式取得特性的值,代碼如下: ①自定義特性 public class MyAttribute:Attribute{public string Name { get; set; }…

前端知識點總結---面試專用

1.關于基礎css html js部分 1.1基本算法 1&#xff09;快速排序 時間復雜度 nlogn function quickSort(arr){if (arr.length<1){return arr;}var pivotIndex 0,pivort arr.splice(pivortIndex, 1)[0];var left [],right [];for (var i 1, length arr.length; i < l…

鴻蒙系統大疆,華為操作系統“鴻蒙OS”來了!

原標題&#xff1a;華為操作系統“鴻蒙OS”來了&#xff01;8月9日&#xff0c;華為消費者業務CEO余承東在華為開發者大會上如期發布了華為鴻蒙操作系統“HarmonyOS”。據介紹&#xff0c;鴻蒙內核在2017年便完成技術驗證&#xff0c;最初是為了提升操作系統的跨平臺能力而研發…

詳述 IntelliJ IDEA 插件的安裝及使用方法

首先&#xff0c;進入插件安裝界面&#xff1a; Mac&#xff1a;IntelliJ IDEA -> Preferences -> Plugins;Windows&#xff1a;File -> Settings -> Plugins.標注 1&#xff1a;顯示 IntelliJ IDEA 的插件分類&#xff0c; All plugins&#xff1a;顯示 IntelliJ …

杭漂兩年,深漂兩年,宇宙的盡頭到底在哪兒

hi&#xff0c;這里是桑小榆。這次分享的是一位杭漂兩年&#xff0c;深漂兩年的碼農伙伴的經歷。首先他能夠在大學期間就尋找到自己的熱愛并持之以恒值得令人學習。其次他的工作經歷可以說是非常的“程序員”&#xff0c;因為程序員所面對的職業生涯中&#xff0c;所謂的實習&a…

侶信即時通訊系統的技術解析

侶信&#xff1a; 說明&#xff1a; 侶信專業版是面向中小企業和者各類團隊組織內部交流使用工具,可以在互聯網或者局域網中使用。具有豐富的功能&#xff0c;聊天&#xff0c;群組&#xff0c;部門組織&#xff0c;內部朋友圈&#xff0c;以及漂流瓶搖一搖等功能。它可以在局域…

Confluence 6 使用 WebDAV 客戶端來對頁面進行操作

下面的部分告訴你如何在不同的系統中來設置原生的 WebDAV 客戶端&#xff0c;這個客戶端通常顯示在你操作系統的文件瀏覽器中&#xff0c;例如&#xff0c;Windows 的 Windows Explorer 或者 Linux 的 Konqueror。在 Mac OSX Finder 中訪問 Confluence你可以成功的連接&#xf…

.Net之接口小知識

目的通過一個簡單的項目&#xff0c;在原來的文章基礎上完善一下常用的幾種WebApi編寫方式以及請求方式&#xff0c;一方面是用于給我一個前端朋友用來學習調用接口&#xff0c;另一方面讓我測試HttpClient的一些效果。本文示例代碼環境&#xff1a;vs2022、net6準備新創建了一…

你所不知道的setTimeout

JavaScript提供定時執行代碼的功能&#xff0c;叫做定時器&#xff08;timer&#xff09;&#xff0c;主要由setTimeout()和setInterval()這兩個函數來完成。它們向任務隊列添加定時任務。初始接觸它的人都覺得好簡單&#xff0c;實時上真的如此么&#xff1f;這里記載下&#…

android 特效繪圖,Android繪圖機制與處理技巧——Android圖像處理之圖形特效處理...

Android變形矩陣——Matrix對于圖像的圖形變換&#xff0c;Android系統是通過矩陣來進行處理的&#xff0c;每個像素點都表達了其坐標的X、Y信息。Android的圖形變換矩陣是一個3x3的矩陣&#xff0c;如下圖所示&#xff1a;72F0CAC1-14FB-40F8-A430-8F542B09DC4E.png當使用變換…

WPF 使用 DrawingContext 繪制刻度條

WPF 使用 DrawingContext 繪制刻度條控件名&#xff1a;Ruler作者&#xff1a;WPFDevelopersOrg原文鏈接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;項目使用 MIT 開源許可協議&#xff1b;定義I…

純css實現漂亮又健壯的tooltip

前言 tooltip的實現有多種方式&#xff0c;下面是一個tooltip成長史。 預覽 https://codepen.io/moddx/pen/... 原始版 最簡單的莫過于就用原始title屬性&#xff0c;像這樣&#xff1a; <button title"tips">button</button> 缺點是體驗是差了點&#x…

個人中心的html,個人中心.html

&#xfeff;個人中心$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };…

使用CMD命令修改Windows本地賬戶密碼

2019獨角獸企業重金招聘Python工程師標準>>> 一、以管理員身份運行cmd命令 二、在命令提示符窗口中輸入命令符&#xff1a;net user Administrator 123&#xff0c;然后按回車鍵“Enter”。(Administrator是你的win8用戶名&#xff0c;123是重新設置的密碼。) ? 三…

Android 編譯時:m、mm、mmm、mma、mmma的區別

m&#xff1a;編譯整個安卓系統 makes from the top of the tree mm&#xff1a;編譯當前目錄下的模塊&#xff0c;當前目錄下需要有Android.mk這個makefile文件&#xff0c;否則就往上找最近的Android.mk文件。 builds all of the moudles in the current directory mma&#…

java線程安全問題原因及解決辦法

1.為什么會出現線程安全問題 計算機系統資源分配的單位為進程&#xff0c;同一個進程中允許多個線程并發執行&#xff0c;并且多個線程會共享進程范圍內的資源&#xff1a;例如內存地址。當多個線程并發訪問同一個內存地址并且內存地址保存的值是可變的時候可能會發生線程安全問…

html語言怎么添加圖片,我想問你一下,你是怎么在html中插入本地圖片?非常感謝...

滿意答案小蜜蜂手工2013.10.03采納率&#xff1a;43% 等級&#xff1a;12已幫助&#xff1a;7929人img{float:right}在下面的段落中&#xff0c;我們添加了一個樣式為 float:right 的圖像。結果是這個圖像會浮動到段落的右側。This is some text. This is some text. This i…

數組實現矩陣逐層向內層加1

package java1701;public class javaMain { public static void main(String[] args) { // 逐層加 // 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 // 1 2 2 2 2 1 1 2 2 2 1 1 2 2 1 1 2 1 // 1 2 3 3 2 1 1 2 3 2 1 1 2 2 1 1 1 1 // 1 2 3 …

EntityFrameworkCore上下文如何實現繼承?

【導讀】如果我們存在基礎設施服務和其他服務&#xff0c;我們會定義屬于基礎設施服務的上下文以及其他服務的上下文&#xff0c; 而且會獨立部署&#xff0c;此時其他服務需要使用基礎服務&#xff0c;我們都會暴露基礎服務接口給到其他服務調用&#xff0c;這也是常規操作若在…