- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
前端计算 和 安全防御
about:me
{
name: 佳⾠辰,
nick: EtherDream,
from: 阿⾥里巴巴安全部
}
前端开发
安全研究
Geeker
1995
2000
2005
2010
2015
about:history
CPU: 500M
RAM: 64M
Hello World
CPU: 2G x 4
RAM: 8G
今天
前端利⽤用
⺴⽹网络攻击
Great Cannon
在线挖矿
⽐比特币、虚拟币
科学计算
最⼤大梅森素数、SETI
其他 ….
分担后端
传统
不信任客户端的⼀一切数据,所有计算服务端完成
尝试
设计合理的机制,利⽤用前端资源,分担后端⼯工作
案例:富⽂文本过滤的思考 ……
富⽂文本跨站
跨站攻击,第⼀一次接触⺴⽹网络安全
HTML 字符串 - DOM 树
过滤 ⽩白名单 外的 节点 和 属性
DOM 树 - HTML 字符串
反思
完整的富⽂文本过滤,应当有如下流程:
简化的流程
HTML 字符串 - 正则
出于性能考虑,⼤大多在 字符串层⾯面 过滤
能想到的
⼤大⼩小写、引号、分隔符 …
想不到的
浏览器私有特征、系统字集、特殊字符 …
HTML 语法复杂
前端过滤
A
B
⽂文档
渲染前
HTML 字符串 - DOM(交给 DOMParser )
干净的 DOM
后端
只储存,不过滤
⽤用户提交
富⽂文本 HTML
启⽰示
浏览器 擅⻓长的问题,浏览器 ⾃自⼰己解决。
可疑元素
外链资源
本地存储
测试痕迹
……
前端监控
换⼀一种⾓角度
跨站攻击难以杜绝,不如增加 预警 机制。
第⼀一时间发现问题
启⽰示
⽤用户优势:数量⼤大、成本低、覆盖⼲⼴广
汇编
JavaScript
Java
C
解释执⾏行
动态类型
沙箱限制
⾼高性能计算
性能,⼀一直是脚本语⾔言的软肋
装机量
编译型
JIT
多线程
跨平台
传统⽅方案 — Flash
计算⽅方⾯面,Flash 拥有众多优势
强类型
前沿⽅方案 — asm.js
使⽤用语法糖,约定⼀一套 强类型 规范。
asm.js
x|0
x 0
=
=
int x
uint x
通过⼯工具⽣生成,例如:emscripten
可接近 Native 的性能
100%
80%
60%
40%
Native
asm.js
Flash
JavaScript
性能对⽐比
效率⼤大致对⽐比
未来⽅方案 — WebAssembly
标准化的 Web 计算⽅方案。
⼆二进制格式。更规范,更快,兼容性更强。
拭⺫⽬目以待 ......
计算的价值
凭空计算,能否创造价值?
⽆无价值: 计算结果没有任何⽤用途。
有价值: 计算过程的⼀一种认可。
Sleep(5000)
for (i = 0 ~ 100 亿)
for (i = 0 ~ 100 亿) result += i ;
耗时 ≠ 价值
本地
Cookie、Storage
休眠存储扫描
本地存
Cookie、Storage
⼤大循环 储扫描
本地存储扫描
Cookie、Storage
可预测的问题
耗时 = 价值
计算 不可预测的问题,答案只能穷举,耗费 ⼤大量 时间。
经典案例
MD5(X) = X
求 X
计算⽅方
散列不可预测,答案只能穷举。(⼤大量计算)
鉴定⽅方
代⼊入答案即可校验。(计算⼀一次)
难度可控
求 X,使结果前 N 位等于 0
MD5(问题 + X) = 0000………………
改变 N 的⼤大⼩小,可调整难度
提交
带上答案
编写帖⼦子
问题解答中…
打开⻚页⾯面
获得问题
创建计算线程
实际应⽤用
使⽤用⼯工作量,限制发帖频率
接收
校验答案
是否符合问题
对⽐比验证码
限速
⼈人和机器都能通过
⼯工作量
消耗计算⼒力
机器不能通过
验证码
消耗⽤用户体验
⼯工作量其他⽤用途
密码强化
隐私泄露
⼿手机、邮箱、⾝身份证 ….
加密过的密码
如果破解明⽂文密码,可以尝试登录其他账号
密码泄露
近年来,拖库 事件频发。
破解密码
知道加密⽅方式,就可以 暴⼒力破解
字典
常⽤用的词汇组合,增加猜中的⼏几率。
破解速度
加密有多快,猜⼀一次就多快。
⼤大并发
使⽤用多线程、GPU 等可以更快。
保护密码
提⾼高加密时间 - 增加破解时间
慢加密
常⻅见算法:bcrypt、scrypt、PBKDF2 …
可设置加密过程的 ⼯工作量,想多慢就多慢。
缺陷
增加服务器计算压⼒力。
前端加密
前端
password = slow_hash( password )
后端
保持不变
注意点
不是保护账号
数据泄露后,可以⽤用 Hash 登录,即使不知道明⽂文密码。
文档评论(0)