2015-03-25 4 views
3

Я использую этот пакет Elmah для регистрации необработанного исключения в проекте Web Api.Как защитить Elmah.axd в проекте Web Api

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

Пакет прекрасно работает с Web API и успешно в состоянии регистрировать все необработанное исключение Elmah, однако мало заботится об обеспечении безопасности Elmah.axd хотя. Я использую аутентификацию знака Token Identifier для Asp.Net для вызова API, поэтому механизм безопасности по умолчанию недействителен в моем случае. Любая идея, как я могу защитить в своем случае, я хочу разрешить это только пользователю, который имеет роль администратора. Пожалуйста, предложите

ответ

0

я понял два пути преодоления проблемы с маркером, но оба из них имеют недостатки в некоторых отношениях, хотя, но годный к употреблению:

  1. Elmah.mvc позволяет принять решение о том, что URL вы хотите использовать, так что если вы запретить доступ к исходному Elmah, отключив доступ к/Elmah URL и вместо того, чтобы добавить appsetting для elmah.mvc подобное:
<add key="elmah.mvc.route" value="elmah_very_secure_url"/> 

Затем, обеспечивая более безопасный/случайный URL-адрес, вы можете быть единственным, кто является abl e для доступа к нему. Этот подход имеет некоторые недостатки в области безопасности, поскольку он полагается на секретный URL-адрес, но многие сайты действительно используют этот подход, когда отправляют вам URL-адрес, который вы можете использовать для входа в систему, и т. Д. Более подробную информацию можно найти на странице security.stackexchange.com относительно того, как обеспечить этот подход и каковы последствия.

  1. Выполнение собственного метода, который вы можете вызвать с консоли, чтобы предоставить заголовок аутентификации, который требуется. Это может выглядеть примерно так, что для угловой (идея просто использовать структуру, которая делает перехват запроса уже добавить маркер и использовать его для выдачи добраться до 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-адресам потерпеть неудачу. Его можно расширить по-разному, но я не вижу удобного способа его исправления.

 Смежные вопросы

  • Нет связанных вопросов^_^