专栏名称: qize
前端交互开发工程师
目录
相关文章推荐
51好读  ›  专栏  ›  qize

前端安全规范

qize  · 掘金  · 前端  · 2017-12-28 03:21

正文

本文档描述前端开发人员在应用开发中,需要关注的安全问题和相应的编码规范,旨在杜绝一些常见的安全隐患。

**说明:**文档中使用的关键字「MUST」,「MUST NOT」,「REQUIRED」,「SHALL」,「SHALL NOT」,「SHOULD」,「SHOULD NOT」,「RECOMMENDED」,「MAY」和「OPTIONAL」在 RFC2119 中有说明。

背景知识

本文不会详细介绍 Web 安全的攻击和防御技术,所以请先参考如下资料了解相关知识:

XSS

XSS防御

请务必阅读: 终极XSS防护备忘录 根据其中的描述做好数据转义操作。

使用fis进行smarty模板XSS转义:

fis-plus默认开启xss转义功能,需要编译时加 -o 参数

fisp release -o

富文本数据

富文本数据「MUST」必须由 RD 依赖最小化原则进行处理,杜绝不安全的内容。

CSRF

背景知识:

Cookie使用

禁止「MUST NOT」给 baidu.com 域下设置 cookie,设置 cookie 请指定为当前域名。

禁止「MUST NOT」给页面设置 document.domain = "baidu.com"。

防钓鱼

似乎没啥好方法。

隐私数据

禁止「MUST NOT」在页面中出现 ip 相关信息 ,如有提交 ip 给 server 端的需求,请修改为其它形式,比如:由 rd 在 server 端间接获取 ip 信息。

用户的个人隐私信息:姓名、邮箱、电话、QQ 等,必须「MUST」遵守最小化原则,使用不到信息 禁止「MUST NOT」 出现在页面代码中,获取这些数据的 json 接口也必 「MUST」须经过权限控制。

页面跳转

获取 url 中的参数,跳转至另一个站点时, 禁止「MUST NOT」跳转至任意站点,「MUST」设置白名单,只允许跳转至规定的站点。

点击页面中的链接跳转至第三方站点的时候,建议「RECOMMENDED」 以类似百度、 Google 搜索结果中 Server 端跳转的形式进行,后端可以对 URL 进行安全性扫描,检测到是一个恶意网站、或者目标资源是可执行文件时,应给予用户强烈的警告,告知其风险。

第三方功能和资源

页面中嵌入的第三方功能,禁止「MUST NOT」直接内嵌第三方 JS 代码,建议以「RECOMMENDED」iframe 形式引入 。

页面中如果需要使用第三方的数据,建议 「RECOMMENDED」 由 RD 获取,尽量避免以 jsonp 方式获取,如必须使用 jsonp,请限制好第三方返回的 callback 函数名,对于不允许使用的函数名称,一律禁止。

原则上禁止「MUST NOT」使用第三方提供的资源:图片、文档等,如有必须,建议「RECOMMENDED」由 RD 抓取相关内容转存至自有 Server。因为,外链会产生站外请求,可以被利用实施 CSRF 攻击,而且往往存在性能问题。

点击劫持

对一些重要的操作,例如删除数据、支付等,建议「RECOMMENDED」先验证是否被嵌套。如果处于第三方页面的框架里,应弹出确认框提醒用户。确认框的坐标位置最好有一定的随机偏移,从而使攻击者构造的点击区域失效。验证方式为:







请到「今天看啥」查看全文