網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 首先來看看 Security::SecWalkCommonProlog 函數 (Security.cpp:406) 定義的特殊幀。首先會跳過遍歷操作的調用者自己的幀;然后當進行堆棧遍歷指定最大幀數為1時,跳過所有 Reflection/Remoting 調用的內部幀;最后針對 LookForMyCallersCaller 這種特殊調用,以及指定最大幀數進行處理。 以下內容為程序代碼: BOOL Security::SecWalkCommonProlog (SecWalkPrologData * pData, MethodDesc * pMeth, StackWalkAction * pAction, CrawlFrame * pCf) { *pAction = SWA_CONTINUE; // 跳過 CAS 檢測調用幀 if ((pData->pStackMark != NULL) && !IsInCalleesFrames(pCf->GetRegisterSet(), pData->pStackMark)) return TRUE; // 跳過內部函數幀,如 Reflection / Remoting 調用的內部幀等等 if (pData->dwFlags & CORSEC_SKIP_INTERNAL_FRAMES) { // 跳過 Remoting.Messaging.StackBuilderSink.PrivateProcessMessage 方法 if (pMeth == s_stdData.pMethPrivateProcessMessage) { pData->bSkippingRemoting = TRUE; return TRUE } // 跳過 Remoting 透明代理幀 if (!pCf->IsFrameless() && pCf->GetFrame()->GetFrameType() == Frame::TYPE_TP_METHOD_FRAME) { pData->bSkippingRemoting = FALSE; return TRUE; } // 跳過 Remoting 幀 if (pData->bSkippingRemoting) return TRUE; // 跳過 Refection 相關類型的方法幀 MethodTable *pMT = pMeth->GetMethodTable(); if (pMT == s_stdData.pTypeRuntimeMethodInfo || pMT == s_stdData.pTypeMethodBase || pMT == s_stdData.pTypeRuntimeConstructorInfo || pMT == s_stdData.pTypeConstructorInfo || pMT == s_stdData.pTypeRuntimeType || pMT == s_stdData.pTypeType || pMT == s_stdData.pTypeRuntimeEventInfo || pMT == s_stdData.pTypeEventInfo || pMT == s_stdData.pTypeRuntimePropertyInfo || pMT == s_stdData.pTypePropertyInfo || pMT == s_stdData.pTypeActivator || pMT == s_stdData.pTypeAppDomain || pMT == s_stdData.pTypeAssembly) { return TRUE; } } // 如果只希望檢測調用者的調用者兩級,則跳過其他的所有幀 if ((pData->pStackMark != NULL) && (*pData->pStackMark == LookForMyCallersCaller) && !pData->bFoundCaller) { pData->bFoundCaller = TRUE; return TRUE; } // 最多只檢測 cCheck 幀 if (pData->cCheck >= 0) { if (pData->cCheck == 0) { pData->dwFlags |= CORSEC_STACKWALK_HALTED; *pAction = SWA_ABORT; return TRUE; } else { --(pData->cCheck); } } return FALSE; } 在跳過了這些無需處理的堆棧幀后,CodeAccessCheckStackWalkCB 函數將對 Assembly/AppDomain 變化,和顯式指定安全對象的情況,進行 CAS 檢測。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!