2015-03-25 32 views
3

我正在使用此Elmah程序包記錄Web Api項目中未處理的異常。如何在Web Api項目中保護Elmah.axd

https://github.com/rdingwall/elmah-contrib-webapi/issues/18

包的偉大工程使用Web API,它能夠成功地記錄所有未處理的異常ELMAH,但是大約雖然保護Elmah.axd喜中有憂。我使用Asp.Net身份標識承載認證進行API調用,所以默認的安全機制在我的情況下是無效的。任何想法我怎麼能保證在我的情況下,我想只允許這個用戶在管理角色。請建議

回答

0

我想通克服與令牌問題的兩個方面,但他們兩人都在某些方面有缺陷的,雖然,但可用:

  1. Elmah.mvc允許你在URL決定要使用,所以如果你通過禁止訪問/ ELMAH URL不允許訪問原始ELMAH,而是添加appsetting的elmah.mvc這樣的:通過提供更安全的
<add key="elmah.mvc.route" value="elmah_very_secure_url"/> 

然後/隨機url你可以是唯一一個abl的人e訪問它。這種方法存在一些安全漏洞,因爲它依賴於祕密URL,但許多網站實際上在使用這種方法發送給用戶時,只有您可以使用該URL登錄等。有關更多信息,請參閱security.stackexchange.com上有關這種方法的安全性和影響是什麼

  1. 做自己的方法,您可以從控制檯調用以提供所需的Authentication標頭。它可以是這個樣子,對角(的想法只是你使用確實的請求的攔截已經添加標記,並利用它發出去ELMAH框架):
function elmah(){ 
    angular.element(document.body) 
      .injector() 
      .get("$http") 
      .get("\elmah") 
      .success(function(response) 
      { 
       var elmahWindow = window.open(""); 
       elmahWindow.document.write(response); 
      }); 
}; 

然後,如果您在控制檯中鍵入elmah(),您將打開一個新窗口。這種方法似乎是足夠安全的(除非你改變方法來接受一些參數,然後濫用xss或其他),但問題是,你只能看到elmah中的原始視圖,並點擊所有的URL失敗。它可以以各種方式進行擴展,但我沒有看到用於修復它的簡便方法。