加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 我应该如何保护我的SPA和Web.API?

发布时间:2020-12-16 06:32:25 所属栏目:asp.Net 来源:网络整理
导读:我必须实现一个网站(MVC4 /单页应用程序淘汰Web.API),我一直在阅读大量的文章和论坛,但我仍然无法弄清楚安全/身份验证中的一些要点以及前进的方法在保护登录页面和Web.API时. 该网站将完全在SSL下运行.一旦用户第一次登录,他/她将收到一封电子邮件,其中包含
我必须实现一个网站(MVC4 /单页应用程序淘汰Web.API),我一直在阅读大量的文章和论坛,但我仍然无法弄清楚安全/身份验证中的一些要点以及前进的方法在保护登录页面和Web.API时.

该网站将完全在SSL下运行.一旦用户第一次登录,他/她将收到一封电子邮件,其中包含确认注册过程的链接.密码和“salt”值将以加密方式存储在数据库中,不可能将密码解密回来. API将仅用于此应用程序.

我有一些问题需要在回答之前回答:

>在安全性方面,哪种方法对我的应用程序最好:Basic / SimpleMembership?还有其他可能吗?
>对象Principal / IPrincipal仅用于基本身份验证?
>据我所知,如果我使用SimpleMembership,因为使用了cookie,这是不是打破了RESTful范式?因此,如果我构建一个REST Web.API,我不应该避免使用SimpleMembership吗?
>我正在使用令牌检查ThinkTecture.IdentityModel.这是一种身份验证,如Basic,Forms或Auth,还是可以添加到其他身份验证类型的东西?

谢谢.

解决方法

很可能这个问题将因为过于本地化而被关闭.即便如此,我还会提出几点建议.这不是一个答案,但评论部分对此来说太小了.

>您的身份验证方法和方式完全取决于您的子系统.没有一种方法可以最好地适用于每个人. SPA与任何其他应用程序没有什么不同.您仍将基于身份验证授予对某些资源的访问权限.这可能是API,具有自定义Authorization属性,可以是标头值,基于令牌,谁知道!无论你认为什么是最好的.
>我建议你阅读更多相关内容,了解其工作原理.
>使用cookies绝不表示它会破坏REST.你会发现很多关于这个特定项目的文章. Cookie将根据您的请求传递,只需传递服务器所需的任何特定信息,以便为您提供数据.如果发送cookie会破坏REST,那么向API发送参数也会破坏REST!
>现在,一种非常常见的方法(绝不是ONE AND ALL方法)是使用基于令牌的SPA系统.原因虽然很多,但最容易解释的是,您的服务(Web API或其他)可以单独托管,而您的客户端也可以作为CORS客户端使用.在这种情况下,您以您选择的任何形式进行身份验证,创建安全令牌并将其发送回客户端,并根据令牌检查需要经过身份验证的用户的每个资源.每次请求时,令牌都将作为标题的一部分发送.没有令牌会导致简单的401(未授权)或无效令牌可能导致403(禁止).

没有人说SPA需要全部是静态HTML,有数据绑定,它也可能是你的MVC网站返回部分被加载(我过去做过的事情).至于使用HTML和JS(特别是Durandal),有一些方法可以保护客户端应用程序.最终,锁定服务器上的数据,并在收到401/403时将客户端路由到登录屏幕.

如果您更关注XSS或请求伪造,那么即使只使用HTML和JS,也有办法防止这种情况(尽管不像使用MVC删除防伪标记那么容易).

我的两分钱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读