Skip to content

Latest commit

 

History

History
285 lines (127 loc) · 8.81 KB

2016.md

File metadata and controls

285 lines (127 loc) · 8.81 KB

2016-9-7

2015 Password Hashing Competition 胜出者 —— argon2 终于有人移植成网页版了:

https://github.com/P-H-C/phc-winner-argon2

不过该算法重度依赖 64 位整数计算,而 js/asm.js 并不原生支持 int64,只能用两个 32 位整数模拟,所以性能很低。还是期待 WebAssembly~

为什么要在浏览器端 Hash 口令?这对安全有很大的提升,网站拖库后攻击者破解 Hash 的难度将会增加上百万倍!具体可参考之前写的:https://www.cnblogs.com/index-html/p/frontend-slow-hash.html

2016-8-31

看见好多人在用 CSP 日志来跟踪运营商广告,其实 CSP 原本是用来拦截 XSS 的,上报外部资源只是个辅助功能,各种不好用。。。

其实现在的主流浏览器有一个接口:performance.getEntries(),可以取出网页加载过的所有资源:

image

几行代码就可以检测有没有加载异常的资源,比 CSP 灵活多了。


另外还有一种跟踪资源加载的方案:

document.addEventListener('load', e => {
  console.log(e.target.src)
}, true)

虽然覆盖面没有前面那个大,但实时性强,并且兼容性更好,除了老 IE 外都能运行。熟悉前端的猜猜是什么原理~

2016-7-25

Chrome49 支持 <a rel="noopener">,W3C 总算是重视「跳转 opener」这种古老的钓鱼方式了。。。

2016-7-22

WebP 刚出来时感觉特别兴奋,还写了个 flash 版的解码器(用 alchemy 编译)

https://www.etherdream.com/WebP/

后来觉得并没什么卵用,而且解码很慢。不知道现在用 asm.js + worker 会不会快一些~

2016-7-14

Number.MAX_VALUE.toString(2)

1024 bit,53 个 1 和 971 个 0

"1111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

2016-7-9

(非原创)前些时候看到一个 js 版的 “文曲星模拟器”:

https://github.com/hackwaly/jswqx

镜像有几十 MB,如果直接 1:1 把 6502 指令翻译成 JS 的话估计超级大,性能可能比模拟还低。

2016-7-8

上世纪 80 年代的 6502 CPU 指令“翻译”成 JavaScript~

image

image

贪吃蛇 Demo(ASWD 控制): http://www.etherdream.com/FunnyScript/6502snake/main.html

2016-7-5

上回看到一个在线的 MOS 6502 CPU 的视觉图,于是突发奇想,能不能将 6502 指令 1:1 翻译成 JavaScrpt 呢?这样能直接在浏览器里运行,而不用模拟器。

于是遐想了几天,写了一些可行性的分析:

https://www.cnblogs.com/index-html/p/translate-machine-code-to-javascript.html

后来发现实现也不困难,借助现有的工具即可。。。就当开开脑洞~

2016-6-10

(非原创)一个在线模拟 6502 CPU 的网站:

image

http://www.visual6502.org/JSSim/

2016-6-10

(非原创)一个 asm.js 实现的红白机模拟机,性能不错,还有声音~

image

image

演示:https://tsone.kapsi.fi/em-fceux/

源码:https://bitbucket.org/tsone/em-fceux/

内置了几个有趣的卡带,还从没见过开场画面的年份有 2000 之后的 NES 游戏~~~

2016-6-2

Chrome 特有的压缩算法 brotli,1G 空文件可以压缩到 13KB。压缩率远超 GZip,和 LZMA 差不多了~

image

image

感觉可以用来做压缩炸弹,比如把一个 1G 的 SVG 图片压缩到 10KB,然后通过外链作为论坛的签名~~~

2016-5-28

(非原创)JS 版的 Python 解释器~

image

Demo: https://pypyjs.org/

2016-5-28

(非原创)DOSBOX 的 asm.js 移植版,非常流畅,还有声音~

image

image

GitHub: https://github.com/dreamlayers/em-dosbox

Demo: https://classicreload.com/

2016-5-24

用 js 写算法就应该利用好语言特性。

比如数组越界不会抛出异常,位运算时会当做 0,可以节省一些判断;比如object 天生支持 string 为 key 的哈希表,而且性能很高。。。

类似的特性还有很多,不利用就浪费了。

2016-5-19

Chrome 目前要求 WebCrypto API 只能在 HTTPS 页面里使用。

个人感觉没有必要,即使没有这个 API 也可以用 JS 实现,只是性能低而已。

2016-5-7

以前画的一个图,哪些环节会泄露你的密码。。。

image

2016-3-31

记得很久以前就有 VRML,现在 VR 出来了是不是该出 VRML5 了~

2016-3-22

Mozilla 的又一个黑科技 LLJShttp://lljs.org/

image

image

有点类似 asm.js,可以转换出高性能的 JS 代码。LLJS 语言有点像 C,可惜并不兼容,还得有学习成本,估计流行不了。

貌似项目已经挂了。。。

2016-3-21

神秘代码(番号)提取~~~

document.body.textContent.match(/[A-Z]{2,}-\d{3,}/g)

2016-3-21

TypeScript 里的 const enum 真心不错,直接编译成常量。

image

image

过去貌似只有 google closure compiler 里才能实现这种效果。

2016-3-16

如果出一个 UglifyTS,压缩效果应该会更好吧,毕竟 TypeScript 能提供更多语言层的信息~

2016-2-26

恶作剧:真·乔布斯~

alias jobs="curl -L t.cn/RGp2Cg1"

image

2016-2-26

window[n] 可得到页面第 n 个框架的 contentWindow (并且不受同源策略限制)

window.length 可得到框架的个数。

虽然是个冷知识,但在 XSS 中会用到。以后再详细介绍。

2016-2-22

可提高 zip 压缩率的工具 zopfli,Google 出品。

https://github.com/google/zopfli

配合 nginx 的 gzip_static 指令,资源先离线压缩,然后发布压缩包到服务器。这样即可节省存储、带宽资源,又避免了运行时压缩,大幅节省 CPU 资源。

另外该项目下还有个叫 zopfli-png 工具用于压缩 PNG 图片,压缩率比 pngout 还高。

br 压缩出现后,这种方案意义就不大了。除了老浏览器,以及非 HTTPS 页面(HTTP 页面不支持 br 压缩)

2016-2-20

如何发送日志而不在控制台 Network 里显示?

点击查看答案

扔给 opener 上报(必须存在而且同源)

当然还有其他方案,大家可以想想,甚至都不用 HTTP/TCP 协议~

2015

2015.md