前端安全规范

前端安全规范

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

说明:文档中使用的关键字「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」先验证是否被嵌套。如果处于第三方页面的框架里,应弹出确认框提醒用户。确认框的坐标位置最好有一定的随机偏移,从而使攻击者构造的点击区域失效。验证方式为:

Flash 使用

SWF与js交互的控制属性AllowScriptAccess,「RECOMMENDED」强烈建议为never,如果选择sameDomain或者always,自己应该清楚自己在做什么

SWF的网络属性AllowNetworking,「RECOMMENDED」强烈建议为none,否则可能会引起CSRF,如果选择all或internel,自己应该清楚自己在做什么

SWF与js参数传递,「SHOULD」需要进行字符过滤,防止XSS攻击

可执行文件(.swf)授信,不应该「SHOULD NOT」使用Security.allowDomain("*"),加载者或被加载者会获得和当前SWF相同的权限

非可执行文件(.txt,.xml,.json,.jpg等)授信,不应该「SHOULD NOT」在crossdomain.xml文件中使用allow-access-from domain="*"

在加载跨域SWF时,「SHOULD NOT」慎用合并安全域(crossdomain.xml授权或loadBytes()),被加载的SWF会拥有和父SWF同样的权限,能做任何事情

在使用sharedEvents时,所发送的事件「SHOULD」应该限制为只包含简单数据的事件,否则可能会把SWF中的数据和舞台上所有对象暴露出去

上传文件

建议「RECOMMENDED」上传接口所在的域名和主域名隔离,并且采用最小化原则限制允许上传的文件大小。

JSON/JSONP协议

JSON 数据,必须「MUST」设置 http header Content-Type : application/json

以 JSONP 形式向第三方提供数据,必须「MUST」设置 http header Content-Type : application/javascript,并且callback function 名称只允许出现:数组、字母、下划线。

JSON/JSONP 方式提供数据,建议「RECOMMENDED」遵循最小化原则,只暴露需要暴露的信息,并且用白名单限制 referer 防止恶意抓取。

Cross Domain 设置

在时 XML Httprequest 2(xhr2) 以及 font-face 如果需要支持跨域访问的需求,禁止「MUST」设置 header 为: Access-Control-Allow-Origin: * ,需要设置为允许访问的地址,比如: Access-Control-Allow-Origin: www.baidu.com

参考资料

JSONP 安全攻防技术
Web 前端攻防 2014
New Tricks in XMLHttpRequest2
WooYun
80sec
Open Web Application Security Project
知道创宇
上传攻击框架
SS编码剖析
XSS原理-1
XSS的原理-2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容