人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng) > 網(wǎng)絡(luò)技術(shù)教程 > 詳細頁面

CLR 中代碼訪問安全檢測完成原理(4)

CLR 中代碼訪問安全檢測完成原理(4)

更新時間:2021-10-03 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認為是互聯(lián)網(wǎng)發(fā)展的第三階段。
首先來看看 Security::SecWalkCommonProlog 函數(shù) (Security.cpp:406) 定義的特殊幀。首先會跳過遍歷操作的調(diào)用者自己的幀;然后當(dāng)進行堆棧遍歷指定最大幀數(shù)為1時,跳過所有 Reflection/Remoting 調(diào)用的內(nèi)部幀;最后針對 LookForMyCallersCaller 這種特殊調(diào)用,以及指定最大幀數(shù)進行處理。

以下內(nèi)容為程序代碼:

BOOL Security::SecWalkCommonProlog (SecWalkPrologData * pData, MethodDesc * pMeth, StackWalkAction * pAction, CrawlFrame * pCf)
{
 *pAction = SWA_CONTINUE;

 // 跳過 CAS 檢測調(diào)用幀
 if ((pData->pStackMark != NULL) && !IsInCalleesFrames(pCf->GetRegisterSet(), pData->pStackMark))
  return TRUE;


 // 跳過內(nèi)部函數(shù)幀,如 Reflection / Remoting 調(diào)用的內(nèi)部幀等等
 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 相關(guān)類型的方法幀
  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;
  }
 }

 // 如果只希望檢測調(diào)用者的調(diào)用者兩級,則跳過其他的所有幀
 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 函數(shù)將對 Assembly/AppDomain 變化,和顯式指定安全對象的情況,進行 CAS 檢測。


網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進步的催化劑。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 乐安县| 苏尼特左旗| 介休市| 宣武区| 竹北市| 高阳县| 磴口县| 麻城市| 鄂州市| 饶河县| 太湖县| 敖汉旗| 鹤峰县| 宽甸| 赤壁市| 黑山县| 沽源县| 富锦市| 郁南县| 乌海市| 连平县| 江西省| 银川市| 苍山县| 哈密市| 中山市| 仁寿县| 琼中| 千阳县| 化州市| 文水县| 临西县| 昌乐县| 荣成市| 江津市| 浠水县| 海兴县| 中江县| 宜都市| 甘南县| 乌拉特前旗|