<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Simon 的所有回復(689)

    評論于 1年前,獲得 0 個贊

    美國國家標準委員會NIST定義了云的4種部署模式:

    • 公用云(Public Cloud)。通過云計算服務商來提供公用資源來實現。這些資源同其他云計算用戶共享,沒有私用專有的云計算資源。

    • 私用云(Private Cloud)。可以通過內部的IT部門以動態數據中心的方式來運行,或者由云計算服務提供商來提供專用資源來運行。但這些專用資源不與其他云計算用戶共享。

    • 混合云(Hybrid Cloud)。可以通過公用云和私用云的組合來實現,或者是基于社區、特定行業、特定企業聯盟來實現。

    • 社區云(Community)。社區云的特點在于區域性和行業性、資源高效共享、有限的特色應用以及成員的高度參與性,部署門檻較混合云更低而適應性更強。

    云計算的使用模式有以下這些:

    • 基礎資源租用:云計算服務提供對計算、存儲、網絡、軟件等多種IT基礎設施資源租用的服務。云計算服務的用戶不需要自己擁有和維護這些資源。

    • 按需彈性使用:云計算服務的用戶能夠按需獲得和使用資源,也能夠按需撤銷和縮減資源。云計算平臺可以按用戶的需求快速部署和提供資源。云計算服務的付費服務應該按資源的使用量計費。

    • 透明資源訪問:云計算服務的用戶不需要了解資源的物理位置和配置等信息。

    • 自助業務部署:云計算服務的用戶利用服務提供商提供的接口,通過網絡將自己的數據和應用程序部署于云計算平臺的后端數據中心,而無需服務商的人工配合。

    • 開放公眾服務:云計算服務用戶所部署的數據和應用可以通過互聯網發布給其他用戶共享使用,即提供公眾服務。

    保護云計算安全需要以下技術:

    • 增強加密技術:增強加密是云計算系統保護數據的一種核心機制。加密提供了資源保護功能,同時密鑰管理則提供了對受保護資源的訪問控制。云服務商需要同時對網絡中傳輸的數據及云系統中的靜態數據進行加密,后者尤為關鍵。加密磁盤上的數據或生產數據庫中的數據可以用來防止惡意的云服務提供商、惡意的鄰居“租戶”及某些類型應用的濫用。此外,一些用戶可能會有如下需求:首先,加密自己的數據;其次,將密文發送給云服務商,客戶控制并保存密鑰,在需要的情況下解密數據。

    • 密鑰管理技術:對云服務商而言,密鑰必須像其他敏感數據一樣進行保護。在存儲、傳輸和備份過程中都必須保護密鑰的安全,較差的密鑰存儲方案可能對加密的數據產生嚴重威脅。同時云服務商還需要相關策略來管理密鑰的存儲,如利用角色分離進行訪問控制,針對某一密鑰,使用實體不能是存儲該密鑰的實體。丟失密鑰意味著被此密鑰所保護的數據面臨嚴重安全風險,運營商必須向用戶提供安全備份和安全恢復的解決方案。

    • 數據隔離技術:在多租戶環境下,不同用戶的數據可能會混合存儲。雖然云計算應用在設計時采用多種技術標注數據存儲空間,防止非法訪問混合數據,但是通過應用程序的漏洞,非法訪問還是會發生,例如,Gmail系統曾經出現過類似問題,某些用戶可以非法獲得其他用戶的郵件。雖然云服務提供商會使用安全機制降低此類安全事件發生的概率,但從本質上看,如果無法實現單租戶專用數據平臺,這種安全威脅將無法徹底根除。

    • 數據殘留技術:是數據在被以某種形式擦除后所殘留的物理表現,存儲介質被擦除后可能留有一些物理特性使數據能夠被重建。由于云計算的動態分配、資源可擴展特性,某一塊存儲空間在短時間內可分配給多個用戶,如果云服務商不能徹底清除之前用戶的歷史數據,則后來用戶可能通過殘留的數據,獲取其他用戶的敏感信息。因此,云服務提供商需具備相應的安全能力,無論用戶的信息存放在硬盤上還是在內存中,應保證在二次分配之前徹底清除當前用戶的信息,保證系統內的文件、目錄和數據庫記錄等資源所在的存儲空間被釋放,或在重新分配給其他云用戶前完全被清除。

    評論于 1年前,獲得 0 個贊

    對日志發起的攻擊有三種:

    • 有選擇性的刪除(修改)日志

      我們知道Windows日志是以實體文件保存在磁盤上的,因此可以很容易的想到一個實現選擇性修改或者刪除日志的方式,既是通過修改文件內容來達到此目的。

      要對日志文件進行修改,那么首先需要解決的問題是文件占坑,我們打開調試器之后可以很清楚的看到日志服務的對應的宿主進程為 Services.exe (NT6下為svchost.exe),所調用的動態鏈接庫文件為 eventlog.dll(NT6下為 wevtsvc.dll) ,于是很自然的我們可以通過注入進程的方式來遍歷打開的文件句柄,同時掛起動態鏈接庫文件的操作線程,解決占坑之后就可以對日志文件進行刪除與修改了。

      介于NT5內核的系統已經退出歷史舞臺,這里也不再做過多討論,有了結構體說明之后可以很容易的像操作其他二進制文件那樣來操作日志文件。剛才說過NT6內核下直接有對應API來完成此日志的操作,所以通過查閱MSDN我們可以很方便的找到對應的API,或者通過讀寫XML文件的方式(自己解析結構稍微麻煩一點)來進行日志文件的修改。修改完成后保存即可,此后再恢復現場既實現了有選擇性的日志刪除或者修改。

    • 阻止本地日志的產生

      有很多情況下,攻陷了一臺Windows終端之后,為了方便我們在此終端上進行的一些猥瑣操作,我們不不希望被記錄到,除了在事后對先前產生的日志進行有選擇的篡改之外,我們還可以用更為粗暴的方式來阻止本地日志的產生。前面說過對于產生日志的主要服務是哪些,那么我們可以很容易的整理出如下思路來阻止本地日志的產生:

      通過遍歷進程找到日志服務對應的宿主進程PID

      通過甄別加載的動態鏈接庫文件找到對應的線程ID

      非常暴力的干掉對應線程

      至此,Windows Event Log 服務便失去了它原有的活力的,成為了啞巴。

    • 對抗實時日志采集系統

      現在越來越多的大型采用ELK架構(ElasticSearch + Logstash + Kibana),通常在Windows又會采用流行的nxlog作為日志采集的agent,那么一個常見的實時日志采集流程如下:

      nxlog 使用模塊 im_file 收集日志文件,開啟位置記錄功能

      nxlog 使用模塊tcp輸出日志

      logstash 使用input/tcp ,收集日志,輸出至es

      通過閱讀源碼可知 nxlog 的tcp通信 apr_socket_send 來發送數據,在Windows對應的動態鏈接庫文件為libapr-1-0.dll,知曉了對應的函數,我們可以很容易的通過注入進程后Hook apr_socket_send 的函數來修改想要傳送的數據包,從而達到欺騙實時日志采集系統的目的。

      如果需要做得較為完美,可以通過 nxlog 的配置文件來獲取其使用何種通道及文件格式來傳輸日志,針對不同類型的方式,在傳輸過程中進行Hook(如以上例子中TCP模式),或者在產生日志信息時進行Hook(如大部分情況下會Json)。

    評論于 9個月前,獲得 0 個贊

    Java卡的安全性體現在以下幾個方面:

    • 編譯時間檢查:Java是一種類型嚴格的語言,其編輯器進行著廣泛且嚴密的編譯時間檢查,以便盡可能多地發現錯誤。

    • 類文件的證實和子集檢查:在Java環境中,所有裝載的類文件都被一個驗證器檢查。

    • CAP文件和輸出文件驗證:一個Applet的類組成了一個或多個包,轉換器將所有類集中于一個包,并將它們轉換為一個CAP文件,同時轉換器還產生了一個出口文件。由于有限的內存空間和計算能力,智能片上的CAP文件驗證器需要在片外運行,一個CAP文件被裝載在Java智能卡之前,驗證器對它進行了靜態檢查。輸出文件驗證即檢查輸出文件內部、相應的CAP文件以確保具有正確格式,并滿足由Java卡虛擬機的限制原則。

    • 安裝檢查:安裝安全包括兩方面:一方面是由安裝器和JCRE標準的安全保證,另一方面是由發行者提供的安全策略。

    • 使用密碼加強信任鏈:任何Java卡文件(源代碼、類文件、CAP文件或輸出文件)都能被加密,在從開發到卡上安裝的過程中,為保證安全性,文件可以被數字簽名以保證完整性并證明提供者的身份。

    • 密碼支持:加密機制在Java卡Applet和系統軟件中被使用,卡加密APIs為這些機制的靈活應用提供了可能,用戶可以根據需要自由選擇加密算法、密鑰大小等。

    評論于 1年前,獲得 0 個贊

    檢測程序是否在沙箱運行的辦法有以下這些:

    • 檢測運行時間:在各類檢測沙箱中,檢測運行的時間往往是比較短的,因為其沒有過多資源可以供程序長時間運行,如果運行時間長則說明不存在沙箱;

    • 檢測開機時間:許多沙箱檢測完畢后會重置系統,我們可以檢測開機時間來判斷是否為真實的運行狀況;

    • 檢測物理內存:當今大多數pc具有4GB以上的RAM,我們可以檢測RAM是否大于4GB來判斷是否是真實的運行機器,否則則為沙箱;

    • 檢測CPU核心數:大多數pc擁有4核心cpu,許多在線檢測的虛擬機沙盤是2核心,我們可以通過核心數來判斷是否為真實機器或檢測用的虛擬沙箱;

    • 檢測臨時文件數:正常使用的系統,其中用戶的臨時文件夾中有一定數量的臨時文件,可以通過判斷臨時文件夾內的文件數量來檢測是否在沙箱中運行。

    評論于 4個月前,獲得 0 個贊

    常用的防火墻主要有以下幾種類型:

    • 軟件防火墻:防火墻有硬件防火墻和軟件防火墻兩種類型,硬件防火墻允許通過端口的傳輸控制協議(TCP)或用戶數據報協議(UDP)來定義阻塞規則,如禁止不必要的端口和 IP 地址訪問。軟件防火墻就像連接內部網絡和外部網絡的代理服務器,它可以讓內部網絡不直接與外部網絡進行通信。很多企業和數據中心會將這兩種防火墻進行組合,以便更加有效地提升網絡安全性。

    • 硬件防火墻:顧名思義,硬件防火墻是安全設備,是放置在內部和外部網絡之間的單獨硬件。此類型也稱為設備防火墻。

    • 包過濾防火墻:根據防火墻的操作方法來劃分防火墻的類型時,最基本的類型是包過濾防火墻。它用作連接到路由器或交換機的內聯安全檢查點。顧名思義,它通過傳入數據包攜帶的信息過濾來監控網絡流量。

    • 電路級網關:電路級網關用來監控受信任的客戶或服務器與不受信任的主機間的 TCP 握手信息,從而決定該會話(Session)是否合法。電路級網關是在 OSI 模型會話層上過濾數據包,比包過濾防火墻要高兩層。電路級網關還提供一個重要的安全功能:代理服務器(Proxy Server)。代理服務器是設置在 Internet 防火墻網關的專用應用級代碼。這種代理服務使得網絡管理員能夠允許或拒絕特定的應用程序或一個應用的特定功能運行。

    • 規則檢查防火墻:該防火墻結合了包過濾防火墻、電路級網關和應用級網關的特點。同包過濾防火墻一樣,規則檢查防火墻能夠在 OSI 網絡層上通過 IP 地址和端口號過濾進出的數據包。它也像電路級網關一樣,能夠檢查 SYN、ACK 標記和序列數字是否邏輯有序。當然它也像應用級網關一樣,可以在 OSI 應用層上檢查數據包的內容,查看這些內容是否符合企業網絡的安全規則。

    • 代理防火墻:代理防火墻充當通過 Internet 通信的內部和外部系統之間的中間設備。它通過轉發來自原始客戶端的請求并將其掩蓋為自己的網絡來保護網絡。代理的意思是充當替代者,它代替了發送請求的客戶端。當客戶端發送訪問網頁的請求時,代理服務器將與該消息交互。代理將消息轉發到 Web 服務器,假裝是客戶端,這樣可以隱藏客戶端的標識和地理位置,從而保護其不受任何限制和潛在攻擊。然后,Web 服務器做出響應,并將請求的信息提供給代理,該信息將傳遞給客戶端。

    • 下一代防火墻:下一代防火墻是結合了許多其他防火墻功能的安全設備。它合并了數據包、狀態和深度數據包檢查。簡而言之,它會檢查數據包的實際有效負載,而不是僅關注報頭信息。

    • 云防火墻:云防火墻或防火墻即服務(Faas)是用于網絡保護的云解決方案。像其他云解決方案一樣,它由第三方供應商維護并在 Internet 上運行。客戶端通常將云防火墻用作代理服務器,但是配置可以根據需求而變化。其主要優點是較好的可伸縮性。它與物理資源無關,從而可以根據流量負載擴展防火墻容量。企業使用此解決方案來保護內部網絡或其他云基礎架構(Iaas/Paas)。

    評論于 1個月前,獲得 0 個贊

    邏輯漏洞:

    • 邏輯漏洞是指由于程序邏輯不嚴謹或邏輯太復雜,導致一些邏輯分支不能夠正常處理或處理錯誤。通俗地講:一個系統的功能太多后,程序開發人員難以思考全面,對某些地方可能有遺漏,或者末能正確處理,從而導致邏輯漏洞。邏輯漏洞也可以說是程序開發人員的思路錯誤、程序開發人員的邏輯存在漏洞。

    • 邏輯漏洞覆蓋面很廣,一直以來對于邏輯漏洞尚未產生明確的分類。 其大致包括了:繞過功能限制、遍歷、越權、弱口令、信息泄漏、任意用戶密碼重置、競爭性問題等。在一些場景下,由于功能本身設計復雜、易于出現紕漏,導致針對特定場景下的特定邏輯漏洞問題討論,此類風險場景有:支付安全、驗證碼安全等。特性:非常隱蔽,危害巨大

    • 代碼之后是人的邏輯,人更容易犯錯,所以邏輯漏洞一直都在,而且由于邏輯漏洞產生的流量多數為合法流量,一般的防護手段或設備無法阻止,也導致了邏輯漏洞成為了企業防護中的難題。

    評論于 1年前,獲得 0 個贊
    • 對員工進行安全原則培訓

      為公司中的每個人建立基本的安全慣例和策略會自動確保您擁有安全的網絡。描述如何處理和保護客戶的信息及其他重要數據的規則和行為的實施,為員工提供維護網絡安全所需工具。

    • 清理和更新,防止網絡攻擊

      最新版本的安全軟件,Web瀏覽器和操作系統是抵御病毒,惡意軟件和其他在線威脅的最佳防護。每次更新后,將防病毒軟件設置為運行并檢查計算機。

    • 為Internet連接提供防火墻安全性

      防火墻是一組相關程序,可以防止外部人員在專用網絡上訪問您公司的數據。仔細檢查您的操作系統的防火墻是否已啟用。如果沒有,請安裝免費的防火墻軟件。另外,如果公司任何員工遠程或在家工作,請確保其系統受到防火墻的保護。

    • 創建移動設備行動計劃

      確保您要求所有移動用戶使用密碼保護其設備,加密其數據并安裝安全應用。有助于防止犯罪分子在移動設備位于公共網絡上時竊取信息。

    • 備份所有公司數據,信息和文檔

      文字處理文檔,電子電子表格,數據庫,財務文件,人力資源文件以及應收/應付賬款文件應及時備份。如果可以,請自動備份數據,或至少每周一次,將副本存儲在異地或云上。

    • 控制對計算機的物理訪問,并為每個員工創建用戶帳戶

      在無人看管時,請始終將其鎖定或存儲在受信任的位置。另外,請確保為需要強密碼的每個員工創建一個單獨的用戶帳戶。管理特權應僅授予受信任的IT員工和關鍵人員。

    • 保護Wi-Fi網絡

      隱藏Wi-Fi網絡以獲得更多保護。設置無線訪問點或路由器,使其不會將網絡名稱廣播到附近的任何其他位置或公司。

    • 限制員工訪問數據和信息

      僅授予雇員訪問其特定工作職責所需的特定數據系統的權限,并且未經許可不得安裝任何軟件。

    • 密碼維護

      要求員工使用唯一的密碼并每三個月更改一次密碼,確保每個人的計算機都受到安全保護的好方法。

    評論于 1年前,獲得 0 個贊

    ARP欺騙是黑客常用的攻擊手段之一,ARP欺騙分為二種,一種是對路由器ARP表的欺騙,另一種是對內網PC的網關欺騙。其原理為:

    ARP協議是建立在信任局域網內所有節點的基礎上,雖然高效但并不安全。ARP協議是一種無狀態的協議,他不會檢查自己是否發過請求,也不管應答是否合法,當接收到目標MAC地址是自己的ARP廣播報文,都會接收并更新緩存,這就為ARP欺騙提供了可能。

    由于局域網內的每臺主機內都存有ARP Cache,ARP攻擊者將發送大量的ARP欺騙報文以淹沒正常的ARP報文,使得主機的ARP緩存表內記錄假的MAC信息,從而達到ARP欺騙的目的。

    ARP欺騙是一種更改ARP Cache的技術,其防御措施有:

    • 在網關上實現IP地址和MAC地址的綁定。為每臺主機添加一條IP地址和MAC地址對應的關系靜態地址表。

    • 通過防火墻過濾常見病毒端口:134-139,445,500,6677,5800,5900,593等以及P2Peye.com下載。

    • 除非很必要,否則停止使用ARP,將ARP作為永久條目保存在對應表中。

    • 使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。確保這臺ARP服務器不被黑掉。

    • 使用Proxy代理IP的傳輸。

    • 使用硬件屏蔽主機,設置好路由,確保IP地址能到達合法的路徑。

    • 管理員要定期從響應的IP包中獲得一個RARP請求,然后檢查ARP響應的真實性。

    • 管理員要定期輪詢,檢查主機上的ARP緩存。

    評論于 11個月前,獲得 0 個贊

    COS的安全措施主要有:

    • 身份認證:智能卡的身份認證與傳統的認證方式有著區別與聯系,主要包括內部認證和外部認證。內部認證是外部終端對智能卡的合法性與真實性的鑒別,認證失敗也不會改變COS的安全狀態;外部認證就是智能卡對外部終端的合法性與真實性的鑒別。智能卡中存在認證計數器,在外部認證時,如果認證失敗,錯誤計數器的值將減1,當計數器的值減到0時,將不提供認證服務,鎖定應用密鑰;如認證成功,恢復錯誤計數器的值為初始值,返回成功的狀態字。

    • 安全報文傳輸:智能卡中的敏感數據不斷與終端進行交互,在交互過程中可能存在不安全因素,為防止非法截取和重放攻擊,需對交互信息進行加密保護,對其以安全報文方式傳輸。安全報文傳輸可以保證數據的完整性、機密性及驗證實體的有效性。對明文信息加密保證信息的機密性,用消息認證碼來保證信息的完整性與實體的有效性。

    • 用戶鑒別:用戶鑒別就是嚴格控制用戶的訪問,以特定的手段驗證持卡人身份。用戶鑒別可以在很大程度上減少智能卡被冒用的可能性,一般情況下使用PIN或CHV(Card Holder Verification,持卡人認證)來辨別合法的持卡人。PIN碼通常以文件格式存儲在智能卡中,當智能卡插入終端時,終端會提示持卡人向智能卡輸入PIN碼,驗證持有人的合法性,相關的PIN驗證和PUK解鎖過程均在智能卡內部COS進行,能夠有效地判別持卡人身份的真實性,從而保護了卡內信息的安全。

    • 數據存取條件機制與多應用管理:在智能卡內,COS對內部文件主要進行空間的管理維護,數據的有效存取,數據的建立、維護、查找、定位等功能。每個文件都包括了文件描述塊和文件數據體,其中文件描述塊(FCB)也稱為文件頭信息,它包含文件的基本屬性(文件大小、文件類型、文件標志等)和文件安全屬性。文件安全屬性就是與文件安全相關的數據,包括文件被操作前后的安全特征。

    • 密鑰管理:密鑰管理是智能卡應用的一個重要部分,密鑰的管理流程主要有密鑰的產生、密鑰的分發、密鑰的存儲、密鑰的備份更新和密鑰的銷毀等過程。

    評論于 4個月前,獲得 0 個贊

    常用的防火墻主要有以下幾種類型:

    • 軟件防火墻:防火墻有硬件防火墻和軟件防火墻兩種類型,硬件防火墻允許通過端口的傳輸控制協議(TCP)或用戶數據報協議(UDP)來定義阻塞規則,如禁止不必要的端口和 IP 地址訪問。軟件防火墻就像連接內部網絡和外部網絡的代理服務器,它可以讓內部網絡不直接與外部網絡進行通信。很多企業和數據中心會將這兩種防火墻進行組合,以便更加有效地提升網絡安全性。

    • 硬件防火墻:顧名思義,硬件防火墻是安全設備,是放置在內部和外部網絡之間的單獨硬件。此類型也稱為設備防火墻。

    • 包過濾防火墻:根據防火墻的操作方法來劃分防火墻的類型時,最基本的類型是包過濾防火墻。它用作連接到路由器或交換機的內聯安全檢查點。顧名思義,它通過傳入數據包攜帶的信息過濾來監控網絡流量。

    • 電路級網關:電路級網關用來監控受信任的客戶或服務器與不受信任的主機間的 TCP 握手信息,從而決定該會話(Session)是否合法。電路級網關是在 OSI 模型會話層上過濾數據包,比包過濾防火墻要高兩層。電路級網關還提供一個重要的安全功能:代理服務器(Proxy Server)。代理服務器是設置在 Internet 防火墻網關的專用應用級代碼。這種代理服務使得網絡管理員能夠允許或拒絕特定的應用程序或一個應用的特定功能運行。

    • 規則檢查防火墻:該防火墻結合了包過濾防火墻、電路級網關和應用級網關的特點。同包過濾防火墻一樣,規則檢查防火墻能夠在 OSI 網絡層上通過 IP 地址和端口號過濾進出的數據包。它也像電路級網關一樣,能夠檢查 SYN、ACK 標記和序列數字是否邏輯有序。當然它也像應用級網關一樣,可以在 OSI 應用層上檢查數據包的內容,查看這些內容是否符合企業網絡的安全規則。

    • 代理防火墻:代理防火墻充當通過 Internet 通信的內部和外部系統之間的中間設備。它通過轉發來自原始客戶端的請求并將其掩蓋為自己的網絡來保護網絡。代理的意思是充當替代者,它代替了發送請求的客戶端。當客戶端發送訪問網頁的請求時,代理服務器將與該消息交互。代理將消息轉發到 Web 服務器,假裝是客戶端,這樣可以隱藏客戶端的標識和地理位置,從而保護其不受任何限制和潛在攻擊。然后,Web 服務器做出響應,并將請求的信息提供給代理,該信息將傳遞給客戶端。

    • 下一代防火墻:下一代防火墻是結合了許多其他防火墻功能的安全設備。它合并了數據包、狀態和深度數據包檢查。簡而言之,它會檢查數據包的實際有效負載,而不是僅關注報頭信息。

    • 云防火墻:云防火墻或防火墻即服務(Faas)是用于網絡保護的云解決方案。像其他云解決方案一樣,它由第三方供應商維護并在 Internet 上運行。客戶端通常將云防火墻用作代理服務器,但是配置可以根據需求而變化。其主要優點是較好的可伸縮性。它與物理資源無關,從而可以根據流量負載擴展防火墻容量。企業使用此解決方案來保護內部網絡或其他云基礎架構(Iaas/Paas)。

    評論于 2年前,獲得 0 個贊

    1.單一職責原則

    不同的類具備不同的職責,各司其職。做系統設計是,如果發現有一個類擁有了兩種職責,那么就要問一個問題:可以將這個類分成兩個類嗎?如果真的有必要,那就分開,千萬不要讓一個類干的事情太多。

    // 單一職責原則
    // 類
    public class People {
     public void work() {
      System.out.println("work");
     }
     public void eat() {
      System.out.println("eat");
     }
     public void play() {
      System.out.println("play");
     }
    }
    // 一個類, 三個職責
    // 單一職責原則
    public interface workInter {
     public void work();
    }
    public interface eatInter {
     public void eat();
    }
    public interface playInter {
     public void play();
    }
    // 繼承接口
    public class People implements workInter, eatInter, playInter {
     public void work() {
      System.out.println("work");
     }
     public void eat() {
      System.out.println("eat");
     }
     public void play() {
      System.out.println("play");
     }
    }
    public class Test {
     public static void main(String args[]) {
      People people = new People();
      workInter worker = new People();
      worker.work();
    
      eatInter eater = new People();
      eater.eat();
    
      playInter player = new People();
      player.play();
     }
    }

    2.開放封閉原則

    類、模塊、函數,可以去擴展,但不要去修改。如果要修改代碼,盡量用繼承或組合的方式來擴展類的功能。

    // 定義一個方法
    function da(x, y) {
     document.getElementById(x).style.color = y;
    }
    // 調用方法da
    da('dashucoding', 'red');
    // 開發封閉原則 -> 錯誤
    // 定義方法
    function da(x, y, z) {
     document.getElementById(x).style.color = y;
     document.getElementById(x).style.size = z;
    }
    
    // 調用方法da
    da('dashucoding', 'red', '100px');
    // 定義一個方法
    function da(x, y) {
     document.getElementById(x).style.color = y;
    }
    
    // 不去動da這個方法
    function dada(x, y, z) {
     da(x,y);
     document.getElementById(x).style.size = z;
    }
    
    // 正確使用開發封閉原則
    
    function da(x, y) {
     document.getElementById(x).style.color = y;
    }
    
    da('dashucoding', 'red');
    
    function dada(x, y, z) {
     da(x,y);
     document.getElementById(x).style.size = z;
    }
    
    dada('dashucoding', 'red', '100px');

    3.里氏替換原則

    對開發封閉原則進行補充,講的是基類和子類的關系。理解里氏替換原則的最經典的例子是“正方形是長方形”,“鴕鳥不是鳥”等,拿正方形來說,上數學課的時候,我們就知道,正方形是長方形,它是一個長寬相等的長方形,那么由此可以看出,應該讓正方形繼承自長方形。

    public class Rectangle {
     private int height;
     private int width;
    
     // 省略getter setter
    }
    
    // 正方形長和寬始終一樣 覆寫
    public class Square extends Rectangle {
     @Override
     public void setWidth(int width) {
      super.setWidth(width);
      super.setHeight(width);
     }
    
     @Override
     public void setHeight(int height) {
      super.setWidth(height);
      super.setHeight(height);
     }
    }
    public class Test {
     public static void main(String[] args) {
      Test test = new Test();
       Rectangle rectangle = new Rectangle();
       rectangle.setHeight(5);
       rectangle.setWidth(4);
       test.zoom(rectangle, 2, 3);
    
       Square square = new Square();
       square.setHeight(5);
       square.setWidth(4);
       test.zoom(square, 2, 3);
     }
    
     public void zoom(Rectangle rectangle, int width, int height) {
      rectangle.setWidth(rectangle.getWidth() + width);
      rectangle.setHeight(rectangle.getHeight() + height);
     }
    }

    4.依賴倒置原則

    定義:高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節,細節應該依賴抽象。

    class Book {
        public string getContent() {
            return "很久很久以前。。。。。";
        }
    }
    class Mother {
        public void narrate(Book book)
        {
            Console.WriteLine(book.getContent());
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Mother monther = new Mother();
            monther.narrate(new Book());
            Console.ReadLine();
        }
    }

    如果讀的對象是報紙,雜志,卻發現客戶端不適用了。

    interface IReader{
        public string getContent();
    }

    這樣Mother類與接口IReader發生依賴關系,而Book和Newspaper都屬于讀物的范疇,他們各自都去實現IReader接口,這樣就符合依賴倒置原則了,修改代碼如下:

    interface IReader {
             string getContent();
        }
        class Newspaper: IReader
        {
        public string getContent()
        {
            return "切爾西豪取12連勝";
        }
    }
    class Book:IReader
    {
    
        public string getContent()
    {
        return "很久很久以前。。。。";
    }
    }
    class Mother
    {
        public void narrate(IReader reader)
        {
            Console.WriteLine(reader.getContent());
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Mother monther = new Mother();
            monther.narrate(new Book());
            monther.narrate(new Newspaper());
            Console.ReadLine();
        }
    }

    采用依賴倒置原則給多人并行開發帶來極大的便利,比如上列中Mother類與Book類直接耦合,Mother必須等Book類編碼完成后才可以進行編碼,因為Mother類依賴于Book類。修改后的程序可以同時開工,互不影響。
    依賴關系的傳遞有三種方式,接口傳遞,構造方法傳遞和setter方法傳遞。

    interface IDriver{
        public void drive(ICar car);
    }
    public class Driver:IDriver{
        public void drive(ICar car){
            car.run();
        }
    }

    構造方法傳遞:

    interface IDriver{
        public void drive();
    }
    public class Driver implements IDriver{
        public ICar car;
        public Driver(ICar _car){
            this.car=_car;
        }
        public void drive(){
            this.car.run();
        }
    }

    setter方式傳遞:

    interface IDriver{
        public void setCar(ICar car);
        public void drive();
    }
    public class Driver:IDriver{
        PRIVATE ICar car;
        public void setCar(ICar car){
            this.car=car;
        }
        public void drive(){
            this.car.run();
        }
    }

    5.接口分離原則

    如果一個類實現一個接口,但這個接口中有它不需要的方法,那么就需要把這個接口拆分,把它需要的方法提取出來,組成一個新的接口讓這個類去實現。

    interface I{
        void method1();
        void method2();
        void method3();
        void method4();
        void method5();
    }
    class A{
        public void depend1(I i){
            i.method1();
        }
        public void depend2(I i){
            i.method2();
        }
        public void depend3(I i){
            i.method3();
        }
    }
    class C{
        public void depend1(I i){
            i.method1();
        }
        public void depend2(I i){
            i.method4();
        }
        public void depend3(I i){
            i.method5();
        }
    }
    class B:I{
        public void method1(){
            Console.WriteLine("類B實現接口I的方法1");
        }
        public void method2(){
            Console.WriteLine("類B實現接口I的方法2");
        }
        public void method3(){
            Console.WriteLine("類B實現接口I的方法3");
        }
        public void method4(){}
        public void method5(){}
    }
    class D:I{
        public void method1(){
            Console.WriteLine("類B實現接口I的方法1");
        }
        public void method2(){}
        public void method3(){}
        public void method4(){
            Console.WriteLine("類B實現接口I的方法4");
        }
        public void method5(){
            Console.WriteLine("類B實現接口I的方法5");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A a=new A();
            a.depend1(new B());
            a.depend2(new B());
            a.depend3(new B());
    
            C c=new C();
            c.depend1(new D());
            c.depend2(new D());
            c.depend3(new D());
            Console.ReadLine();
        }
    }

    可以看到,接口中出現的方法,不管對依賴于它的類有沒有作用,實現類中都必須去實現這些方法。于是我們將原接口I拆分為三個接口:

    interface I1{
        void method1();
    }
    interface I2{
        void method2();
        void method3();
    }
    interface I3{
        void method4();
        void method5();
    }
    class A{
        public void depend1(I1 i){
            i.method1();
        }
        public void depend2(I2 i){
            i.method2();
        }
        public void depend3(I2 i){
            i.method3();
        }
    }
    class C{
        public void depend1(I1 i){
            i.method1();
        }
        public void depend2(I3 i){
            i.method4();
        }
        public void depend3(I3 i){
            i.method5();
        }
    }
    class B:I1,I2{
        public void method1(){
            Console.WriteLine("類B實現接口I1的方法1");
        }
        public void method2(){
            Console.WriteLine("類B實現接口I2的方法2");
        }
        public void method3(){
            Console.WriteLine("類B實現接口I2的方法3");
        }
    }
    class D:I1,I3{
        public void method1(){
            Console.WriteLine("類B實現接口I的方法1");
        }
        public void method4(){
            Console.WriteLine("類B實現接口I的方法4");
        }
        public void method5(){
            Console.WriteLine("類B實現接口I的方法5");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A a=new A();
            a.depend1(new B());
            a.depend2(new B());
            a.depend3(new B());
    
            C c=new C();
            c.depend1(new D());
            c.depend2(new D());
            c.depend3(new D());
            Console.ReadLine();
        }
    }

    6.最少知識原則

    一個對象應該對其他對象保持最少的了解。類與類關系越密切,耦合度越大。

    迪米特法則又叫最少知道原則,即一個類對自己依賴的類知道的越少越好。也就是說,對于被依賴的類不管多么復雜,都盡量將邏輯封裝在類的內部。對外除了提供的public 方法,不對外泄露任何信息。

    舉例額說明如下,有一個集團公司,下屬單位有分公司和直屬部門,現要求打印出所有下屬單位的員工ID。<

    評論于 1年前,獲得 0 個贊

    網絡釣魚是一種經常用來竊取用戶數據的社交工程攻擊,包括登錄憑證和信用卡號碼。它發生在攻擊者偽裝成可信實體時,讓受害者打開電子郵件,即時消息或文本消息。然后,收件人被誘騙點擊惡意鏈接,從而導致安裝惡意軟件,凍結系統以作為勒索軟件攻擊的一部分或泄露敏感信息。攻擊可能會造成毀滅性的結果。對于個人而言,這包括未經授權的購買,竊取資金或識別盜竊。此外,網絡釣魚經常被用來在企業或政府網絡中站穩腳跟,作為更大攻擊的一部分,例如高級持續威脅(APT)事件。在后一種情況下,為了繞過安全邊界,在封閉的環境中分發惡意軟件,或獲得對安全數據的特權訪問,員工都會受到危害。

    網絡釣魚攻擊防護需要用戶和企業采取措施:

    對于用戶而言,警惕性至關重要。偽造的消息通常包含暴露其真實身份的微妙錯誤。這些可能包括拼寫錯誤或域名更改,如前面的URL示例所示。用戶還應該停下來思考為什么他們甚至收到這樣的電子郵件。

    對于企業來說,可以采取多種措施來減輕網絡釣魚和魚叉式網絡釣魚攻擊:

    • 雙因素身份驗證(2FA)是對付釣魚攻擊的最有效方法,因為它在登錄到敏感應用程序時添加了額外的驗證層。2FA依賴于用戶有兩件事:他們知道的東西,比如密碼和用戶名,以及他們擁有的東西,比如他們的智能手機。即使員工受到損害,2FA也會阻止他們使用他們被盜用的憑證,因為僅憑這些憑證不足以進入。
    • 除了使用2FA之外,組織還應執行嚴格的密碼管理政策。例如,應要求員工經常更改密碼并且不允許重復使用多個應用程序的密碼。
    • 教育活動還可以通過執行安全實踐來幫助減少網絡釣魚攻擊的威脅,例如不要點擊外部電子郵件鏈接。
    評論于 1年前,獲得 0 個贊
    • 數據安全保護差異

    4G對網絡信令進行完整性保護。5G對網絡信令和用戶數據進行完整性保護。

    • 認證機制支持差異

    4G使用AKA認證機制。5G使用增強的5G-AKA認證機制,并引入EAP構建更靈活的可擴展框架。

    • 用戶隱私保護差異

    4G通信網絡和終端通常使用臨時移動用戶識別碼TMSI交互。5G利用用戶卡上存儲的歸屬運營商的公鑰對永久用戶標識進行加密。

    • 網間信息保護差異

    4G基于域劃分的網絡域/IP層安全機制、基于公鑰基礎設施提供認證服務的認證框架協議。5G新增了安全邊界保護代理SEPP,對傳輸信息進行機密性和完整性保護。

    評論于 1年前,獲得 0 個贊

    安全物聯網的原則有以下這些:

    • 禁止通用密碼:通常,大容量消費設備都帶有相同的默認密碼。通常,用戶希望快速部署他們的新設備,因此很多人不會采取將默認密碼更改為新密碼的簡單步驟。使用唯一的工廠編程密碼運送每臺新設備是使攻擊者更難訪問或控制數百個已部署設備的簡單第一步。

    • 保護每個接口:任何基于微控制器的設備都有大量可以本地或遠程訪問的接口和端口。主要應用程序將在操作和通信期間使用其中一些端口。但是,其余部分(尤其是用作外部通信接口的任何功能)必須受到保護。同樣,任何IC到IC的接口(例如,微控制器和顯示控制器之間的)都必須是安全的。建議在使用過程中對所有接口進行加密和認證。

    • 使用經過驗證的加密方法:在開放和可互操作技術的世界中,使用行業認可的、開放的和經過驗證的加密標準是必不可少的。不建議使用封閉的專有加密算法。開放加密標準的使用鼓勵所有開發人員、工程師和利益相關者的參與,以便可以不斷評估他們是否存在針對新安全威脅的潛在漏洞。

    • 默認情況下的安全性:至關重要的是,當消費者購買新設備時,它已經設置為盡可能高的安全級別。運送未配置或配置最少安全選項的產品很可能為攻擊者利用這一優勢鋪平道路。消費者開箱即用的安全體驗應該是啟用所有可能的安全措施。默認情況下,開發人員不應讓消費者不受保護。

    • 已簽名軟件的更新:隨著越來越多的消費者智能家居設備可以通過空中自動更新,所以當務之急是每個更新都應該進行加密簽名。通過這種方式,可以防止黑客嘗試使用惡意代碼更新設備。

    • 自動應用軟件更新:消費者不應該成為自己設備的管理員,面臨是否更新產品軟件映像的選擇。如果需要進行更新,則應自動部署和實施。此外,應在不會危及設備操作的時候應用更新。例如,智能聯網洗衣機不應在機器使用時更新。

    • 漏洞報告方案:通常,遇到嵌入式智能家居設備問題的消費者不確定該聯系誰。有沒有受到損害?是否有應報告的新漏洞?該原則保證產品制造商將為客戶提供一種報告問題和傳達他們對產品安全的擔憂的方法。

    • 安全到期日:與購買后有到期日期的產品保修一樣,也應定義安全更新可用的期限并將其傳達給消費者。繼續通過安全更新支持產品涉及持續的工程成本,因此消費者需要能夠在購買時做出明智的決定。制造商還可以選擇提供延長保修來抵消正在進行的安全更新。

    評論于 10個月前,獲得 0 個贊

    HDLC具有以下特點:

    • 通過Keepalive報文來檢測鏈路狀態,可以設置輪詢時間間隔控制發送Keepalive報文的周期。

    • 只能封裝在同步鏈路上,如果是同異步串口的話,只有當同異步串口工作在同步模式下才可以應用。

    • 所有幀均采用CRC校驗,對信息幀進行順序編號,可防止漏收或重收,傳輸可靠性高。

    • 協議不依賴于任何一種字符編碼集。

    • 數據報文可透明傳輸,用于透明傳輸的“0比特插入法”易于硬件實現。

    • 全雙工通信,不必等待確認即可連續發送數據,有較高的數據鏈路傳輸效率。

    • 傳輸控制功能與處理功能分離,具有較大的靈活性和較完善的控制功能。

    • 只支持點到點鏈路,不支持點到多點。

    • 不支持IP地址協商,不支持認證。

    260 聲望
    文章
    70
    粉絲
    7
    喜歡
    6
    亚洲 欧美 自拍 唯美 另类