[MVC 4 Web Api安全性

问题描述 投票:0回答:2

我在Web API安全方面非常陌生。我已经使用了表单身份验证技术。当用户登录时,将创建令牌并将其作为cookie存储在用户的Web浏览器中。在每个请求上,令牌都会被更改,并且如果对用户进行身份验证并授权用户可以访问该服务。

但是我认为这种方法在Web api安全中没有任何作用。 Cookie可以轻松地复制并粘贴到其他浏览器中,任何人都可以获取该服务。

我正在考虑将App密钥和机密与表单身份验证一起使用。不建议使用Oauth等第三方服务进行身份验证。我不确定应用程序密钥的实现以及它如何工作的秘密。

[请提供更好的方法来使用第三方服务来保护我的Web api,并防止cookie劫持等。执行了哪些操作来构建高度安全的Web api。

asp.net web-services security asp.net-mvc-4 asp.net-web-api
2个回答
0
投票

表单认证足够好。您还可以执行以下操作:

  1. 使用防伪(防伪)令牌。检查thisthis
  2. 如果执行敏感操作,请检查该函数的调用是否来自同一站点,这也很好。您可以为此实现自己的操作过滤器。 (检查引荐网站是您的网站还是预期的网站)

编辑:

谢谢大家的评论。我猜你是对的。 ASP中的身份验证cookie会创建为httpOnly cookie,这意味着即使该站点存在一些XSS漏洞,它仍然是安全的并且不会被盗。如果该站点用于敏感操作(例如银行),我还建议在所有地方都使用https,以确保cookie绝对安全。


0
投票

[当我们计划创建企业级应用程序时,我们尤其要注意身份验证和授权。如果使用得当,这两种技术会使我们的应用程序安全,就我们而言,这会使我们的WebAPI更安全。

应用程序接口(API)是用于构建软件应用程序的一组例程,协议和工具。基本上,API指定软件组件应如何交互。此外,在对图形用户界面(GUI)组件进行编程时会使用API​​。

认证

身份验证完全与最终用户的身份有关。这是关于验证正在访问我们系统的用户的身份的,该用户已通过身份验证足以使用或不使用我们的资源。该最终用户是否具有有效的凭据来登录我们的系统?凭据可以采用用户名和密码的形式。我们将使用基本身份验证技术来了解如何在WebAPI中实现身份验证。

授权

为了实现安全性,授权应被视为验证之后的第二步。授权是指经过身份验证的用户具有访问Web资源所需的所有权限。是否被允许访问/对该资源执行操作?这可以通过为经过身份验证的最终用户设置角色和权限来实现,也可以通过提供安全令牌来实现,最终用户可以使用该令牌来访问其他服务或资源。

维护会话

RESTful服务可在无状态协议(例如HTTP)上工作。我们可以通过基于令牌的授权技术在Web API中实现维护会话。经过身份验证的用户将被允许在特定时间段内访问资源,并且可以使用增加的会话时间增量重新实例化该请求以访问其他资源或相同资源。使用WebAPI作为RESTful服务的网站可能需要为用户实施登录/注销,为用户维护会话,向用户提供角色和权限,所有这些功能都可以使用基本身份验证和基于令牌的授权来实现。

基本身份验证的利弊

基本身份验证有其优点和缺点。在实现方面是有利的,它非常易于实现,几乎所有现代浏览器都支持它,并且已成为RESTful / Web API中的身份验证标准。它具有诸如以纯文本格式发送用户凭证,在请求标头内发送用户凭证的缺点,即容易被黑客入侵。每次调用服务时,都必须发送凭据。通过基本身份验证登录后,将不维护任何会话,并且用户无法注销。它非常容易出现CSRF(跨站请求伪造)。

更多信息,请检查下面的链接

https://dipoletechi.com/blog-post/computer-programming-api-security/

© www.soinside.com 2019 - 2024. All rights reserved.