【问题标题】:How to secure Elmah.axd in Web Api project如何在 Web Api 项目中保护 Elmah.axd
【发布时间】:2015-05-28 22:52:00
【问题描述】:
【问题讨论】:
标签:
asp.net-web-api
elmah
【解决方案1】:
我想出了两种方法来克服令牌问题,但它们在某些方面都有缺陷,但都可以使用:
- Elmah.mvc 允许您决定要使用的 url,因此,如果您通过禁用对 /elmah url 的访问来禁止访问原始 elmah,而是为 elmah.mvc 添加一个应用设置,如下所示:李>
<add key="elmah.mvc.route" value="elmah_very_secure_url"/>
然后,通过提供更安全/随机的 url,您可以成为唯一能够访问它的人。这种方法存在一些安全缺陷,因为它依赖于秘密 url,但许多网站在向您发送只有您可以用于登录的 url 时,实际上确实使用了这种方法。更多信息可以在 security.stackexchange.com 上找到,了解如何安全这种方法是什么,有什么影响
- 执行您自己的方法,您可以从控制台调用该方法以提供所需的身份验证标头。对于 Angular,它可能看起来像这样(这个想法只是你使用已经拦截请求的框架来添加令牌并利用它来发出 get 到 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 将失败。它可以通过多种方式进行扩展,但我没有看到一种简单方便的方法来修复它。