`

AngularJS中安全性措施

阅读更多

        在使用web应用中,安全性是应该首要考虑的一个问题。AngularJS提供了一些辅助机制,用来防护来自两个常见攻击方向的网络攻击。

一.JSON漏洞

        当使用一个GET请求获取JSON数组信息的时候(尤其是当这一信息非常敏感,并且需要登录或者授权才能访问时),存在一个很微妙的漏洞。

        这个漏洞的形式为:恶意站点使用<SCRIPT>标签提交一个请求来获取同样的数组信息,由于你仍然处于登录状态,所以恶意站点就可以利用你的登录凭证来请求JSON信息,进而获取它。

        你可能想知道这是怎么做到的,因为数组信息依然存在于你的客户端中,而服务器无法获得这一信息的引用。通常来说,通过获取script资源来返回JSON对象的方式会导致一个错误,但是数组是个例外。

        下面就是漏洞所利用的弱点:在JavaScript中,可以重写或者重新声明内置的对象。在这个漏洞中,数组的构造器被重新声明了,在新的声明中,恶意站点可以获得数据的引用,然后发送到它自已的服务器上。这一漏洞被称为“JSON数组攻击”,具体的成因有些复杂,不过此漏洞只会在特定浏览器的特定版本中存在,因此通常情况下可以忽略。

        有两种方法可以避免这个漏洞:对于敏感信息,请确保每次都是在POST请求中返回JSON格式的响应,并且返回一个对象;或者使用非法的JSON表达式作为结果,然后再用一些客户端逻辑把它转换成真实的数据。

        AngularJS允许你使用这两种方法中的任意一种来避免JSON漏洞。但是在你的应用中,建议选择用POST请求获取JSON信息的方式。

        更进一步,你可以配置一下服务器,在所有JSON响应上加一个前缀:[")]}',\n"

        这样,下面的这个普通的响应['one', 'two'],将会以以下形式返回:

)]}',
['one', 'two']

        AngularJS将会自动删掉前缀,只对后面的JSON字符串进行处理。

 

二.XSRF

        XSRF(Cross-Site Request Forget,跨站请求伪造)攻击通常具有以下特征。

1.它们涉及的站点是那些使用授权信息或者用户身份信息的站点。

2.它们利用了这样一个事实:对于存在这一漏洞的站点,用户会保持登录状态或者授权状态。

3.它们会伪造一些带有副作用的HTTP/XHR的请求(通常是有害的)。

        请考虑下面这个XSRF攻击的例子。

1.用户A登录到了他的银行账户(http://www.examplebank.com)。

2.用户B发现了这一点,然后让用户A访问自已的主页。

3.用户B的主页上有一个精心制作的图片链接,用来发起XSRF攻击:

<img src="http://www.examplebank.com/xfer?from=UserA&amount=10000&to=UserB">

        如果用户A的银行把授权信息保存在cookie中,并且没有过期,那么当用户A打开用户B的网站时,就会触发一个从用户A到用户B的汇款操作,而这一操作根本没有获得授权。

        那么AngularJS是如何帮助避免这一点的呢?它提供了一个“两步”机制来避免XSRF漏洞。

        当客户端进行XHR请求时,$http服务会从cookie里读取一个叫做XSRF-TOKEN(这是一种令牌机制,需要服务端配合)的标记,然后把它设置成一个HTTP头X-XSRF-TOKEN。因为只有来自你自已的域的请求才能读取和设置这个标志,所以可以保证这个XHR来自你自已的域。

        要运用这一机制还需要稍微改动一下你的服务端代码,让它在第一次接受HTTP GET请求时设置一个名为XSRF-TOKEN的可读session cookie。后续发送到服务端的请求可以在HTTP头中验证这个值,从而与第一次请求中的XSRF标记进行匹配。当然,对于每个用户来说这个令牌必须是唯一的,而且服务器必须验证这个值(应该避免使用JavaScript代码生成令牌)。

 

文章来源:《用AngularJS开发下一代Web应用》

分享到:
评论

相关推荐

    AngularJs 后台登录界面

    **AngularJs 后台登录界面开发详解** AngularJs,作为一款强大的前端JavaScript框架,由Google维护,主要用于构建单页...在实际开发过程中,应注重代码规范、性能优化以及安全性措施,以确保应用的质量和用户体验。

    angularjs-1.2.0.zip

    通过结合AngularJS 1.2.0的强大功能和logback-luhn-mask的安全措施,开发者可以在构建高性能、交互性强的Web应用同时,有效保护用户的隐私数据。开源社区的力量在此得到了充分体现,这两个项目都是社区智慧的结晶,...

    使用AngularJS对路由进行安全性处理的方法

    在使用AngularJS进行路由管理时,为了保证应用的安全性,必须实施一套路由安全性策略。这不仅包括在客户端进行安全控制,以防止未授权用户访问特定路由,也需要在服务器端实施安全措施,防止通过直接访问服务器接口...

    AngularJS封装webupload实现文件夹上传

    8. **安全性考虑**:在实现文件夹上传时,务必考虑到安全问题。限制上传文件的类型和大小,防止恶意文件注入。同时,对上传的文件夹进行安全扫描,避免病毒或木马的传播。 总结来说,将AngularJS与WebUploader结合...

    ASP.NET MVC Hotel Booking System Using AngularJS

    此外,项目可能还包含了数据库设计,如使用Entity Framework进行ORM映射,以及安全措施,如身份验证和授权,确保只有经过验证的用户才能访问和修改数据。 总的来说,这个"ASP.NET MVC Hotel Booking System Using ...

    视频监控系统的网络安全性研究.pdf

    【视频监控系统的网络安全性研究】 视频监控系统在网络时代扮演着重要的角色,特别是在智慧城市的发展中,它们不仅用于日常安全监控,还涉及政府的指挥调度和应急响应。然而,随着视频数据的云端存储和网络流转,...

    详解AngularJs中$sce与$sceDelegate上下文转义服务

    整个$sce与$sceDelegate服务确保了在AngularJs应用程序中,开发者能够根据需要明确地标识哪些内容是可信的,并在必要时为特定类型的内容提供安全措施。这对于防止跨站脚本攻击(XSS)等安全威胁至关重要。开发者在...

    使用AngularJS中的SCE来防止XSS攻击的方法

    这里的`trustedHtml`是经过$sce服务的`trustAsHtml`方法处理过的变量,它标记了内容为可信任的HTML,从而允许AngularJS安全地渲染。 然而,`ng-bind-html`并不处理所有HTML标签,只对部分标签进行过滤,如前所述,`...

    AngularJS中如何使用$http对MongoLab数据表进行增删改查

    在实际应用中,通常还会涉及身份验证和授权等安全措施,以保证只有合法的请求才能被处理。 AngularJS和$http服务的结合使用,为前端开发者提供了一个高效、简洁的方式来处理复杂的前后端交互,特别是在使用MongoLab...

    Angularjs手动解析表达式($parse)

    然而,需要注意的是,$parse服务不会检查表达式的安全性,因此解析未经验证的表达式可能会引入安全漏洞。因此,在使用$parse时,如果表达式来自不可信的源,应进行适当的验证或使用安全措施。 在AngularJS中,$...

    login-authentication-app-with-angularjs:带有服务器端的 Angular js 路由的中级高级外观

    此外,考虑到安全性,我们需要实现CSRF防护。AngularJS可以通过`ng-csrf-token`指令和服务器生成的CSRF令牌来实现。服务器在响应头中包含CSRF令牌,客户端将其绑定到HTTP请求头,防止跨站请求伪造攻击。 在实际应用...

    Angular JS权威教程

    - **安全**: AngularJS内置了一些安全措施,如XSS防护,帮助开发者构建更安全的应用。 - **缓存**: 利用浏览器缓存和其他技术优化加载速度,提高用户体验。 - **移动应用**: 支持构建响应式设计和触摸事件,使得...

    anguar-jwt:使用 AngularJS 和 NodeJS 进行基于令牌的身份验证

    4. 安全性措施,如防止CSRF攻击和密码安全处理。 5. 刷新令牌的概念,用于在JWT过期后的身份验证。 理解这些知识点,并能够结合AngularJS和NodeJS实现JWT身份验证,是现代Web应用开发中的重要技能。

    thehideout:使用 AngularJS 的 WordPress 网站

    7. **安全性**:考虑到网站涉及用户信息和交易,必须考虑安全措施,如使用 HTTPS、防止 SQL 注入、XSS 攻击等。 8. **响应式设计**:酒吧网站可能需要适应不同的设备屏幕,所以需要采用响应式设计,确保在手机、...

    Modern JavaScript

    4. **安全性:** 安全性是一个不容忽视的话题,开发人员需要关注跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等问题,并采取相应措施进行防范。 #### 五、结语 通过学习现代JavaScript的开发技术,我们可以更好地...

    CrowFlies:使用地理位置的Cordova angularjs应用

    六、安全性与隐私保护 在处理用户地理位置信息时, CrowFlies需要考虑数据安全和用户隐私。开发者可能采取了措施,如仅在用户同意时才获取位置信息,且数据传输过程中加密,以确保用户数据的安全。 总结, ...

Global site tag (gtag.js) - Google Analytics