Web应用开发规范

2019-01-01  本文已影响42人  HelloJames

Web应用十大安全风险

1. 注入

注入漏洞(如SQL, OS和LDAP注入)。

2. 失效的身份验证和会话管理

与身份认证和会话管理相关的应用程序功能往往没有正确的实现, 导致攻击者破坏口令或密钥, 会话令牌或其他的漏洞来冒充用户身份。

3. 跨站脚本(XSS)

当应用程序收到含有不可信的数据, 在没有进行适当的检验和转义的情况下, 就将它发送给web浏览器, 这就会产生跨站脚本攻击(简称XSS), XSS允许攻击者在受害者的浏览器上执行脚本, 从而劫持用户会话, 危害网站, 或者将用户转向恶意网站。

4. 不安全的直接对象引用

当开发人员暴露一个对内部实现对象的引用时, 例如: 一个文件,目录或数据库密钥, 就会产生一个不安全的直接引用对象。 在没有访问控制检测或其他保护时, 攻击者会操控这些引用去访问未授权数据。

5. 安全配置错误

好的安全需要对应用程序, 框架,应用服务器, web服务器, 数据库服务器和平台, 定义和执行安全配置。 由于许多配置的默认值是不安全的, 因此, 必须定义,实施和维护所有这些配置。 这包括了对所有的软件保持及时地更新, 包括所有应用程序的库文件。

6. 敏感数据泄露

许多的web应用程序没有正确保护敏感数据, 如信用卡, 税务登记号码, 身份验证凭据。 攻击者可能会窃取或修改这些弱保护的数据进行身份盗窃、 信用卡诈骗罪或其他犯罪。

敏感数据应该得到额外的保护, 如在存储或传输时加密, 以及当与浏览器进行交换时, 做特殊的预防措施(如用HTTPS)。

7. 缺少功能级别的访问控制

几乎所有的web应用都检验功能级别的访问权限, 然后再使功能在界面可见。 然而, 当每个功能被访问时, 应用需要在服务器端进行相同的访问控制检查。 否则, 攻击者就能够伪造请求访问未授权的功能。

8. 跨站请求伪造(CSRF)

一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求, 包括用户的会话和cookie和其他认证信息, 发送给一个存在漏洞的web应用程序, 这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求, 而这些请求会被应用程序认为是合法的用户请求。

9. 使用存在已知漏洞的组件

有漏洞的组件(例如: 库, 框架和其他软件模块)几乎是全权限运行。 所以, 一旦漏洞被利用, 可能导致敏感数据泄露或服务器被攻击者接管, 使用这些脆弱组件应用程序可能会破坏他们的防御, 并使一系列的攻击或影响成为可能。

10. 未验证的重定向或转发

web应用程序经常将用户重定向和跳转到其他网页或网站, 并且利用不可信的数据来确定目的页面。 如果没有得到适当的验证, 攻击者可以重定向到受害用户到钓鱼网站或恶意网站, 或者使用转发去访问未授权的页面。

web应用程序缺陷和由于设计可能导致的问题

主要安全性原则

认证

用户口令

认证要求

授权

广义上的授权, 包括授权和鉴权两部分

会话管理

输入检验

Web Storage

  1. 禁止在LocalStorage和SessionStorage中存储敏感数据

说明: LocalStorage和SessionStorage本身无防XSS的机制, 数据容易被窃取, 即使对敏感数据加密, 一旦密钥泄露, 也将导致敏感数据泄露。 客户端上有本地访问权限的操作系统用户或程序都能访问LocalStorage, 容易泄露。

  1. 如果数据权需要临时存储在客户端, 使用会话cookie或者SessionStorage而不是LocalStorage。

说明: LocalStorage是持久性的(没有时间限制)的数据存储。 数据永远不会过期, 除非主动删除数据。 不应该用于存储临时数据, 否则会导致数据长期存储, 增加数据泄漏的风险。 同时, 浪费客户端的磁盘空间, 而存储于会话cookie或SessionStorage中的数据会被及时清除。

  1. 如果在同一个origin上部署多个应用, 则禁止应用使用LocalStorage对象存储数据。

说明: 不像cookie的path属性可以限制只能被特定的路径访问, LocalStorage对象会被同源的所有应用访问(读、写、删除)。 应避免同一个源上部署多个应用(使用不同的子域代替)。 否则, 就禁止应用使用LocalStorage对象存储数据。

Web SQL DataBase和Indexed DataBase

  1. 访问Web SQL DataBase数据库时, 使用参数绑定SQL语句(防止SQL注入)。
  2. 禁止在Web SQL DataBase和Indexed DataBase数据库中存储敏感数据。

说明: Web SQL DataBase和Indexed DataBase存储的数据是明文的, 客户端上有本地访问权限的操作系统用户都能访问, 容易泄露。 而且, 利用XSS漏洞, 攻击者可以构造脚本对Web SQL DataBase和Indexed DataBase数据库进行操纵, 数据容易被窃取, 即使对敏感数据加密, 一旦密钥泄露, 也将导致敏感数据泄露。 因此, 禁止在Web SQL DataBase和Indexed DataBase数据库中存储敏感数据。

上一篇 下一篇

猜你喜欢

热点阅读