我最近碰巧考虑了JavaScript中的对象属性访问时间并遇到了this question,这似乎合理地暗示它应该是恒定的时间。这也让我想知道是否有a limit on object property key lengths。显然,现代浏览器支持高达2 ^ 30的密钥长度,这似乎对哈希函数非常有用。那就是说,
是否有人知道JS使用的散列函数的种类 引擎?
是否可以通过实验创建JavaScript的冲突 财产访问者?
答案 0 :(得分:3)
有人知道JS引擎使用的散列函数的种类吗?
是的,他们的开发人员当然知道哈希函数及其存在的问题。实际上,attacks based on hash collisions在2011年针对各种语言进行了演示,其中包括作为DOS攻击的node.js服务器。
v8团队解决了这个问题,您可以在https://v8project.blogspot.de/2017/08/about-that-hash-flooding-vulnerability.html了解详细信息。
是否可以通过实验创建JavaScript的属性访问器冲突?
看起来如此:https://github.com/hastebrot/V8-Hash-Collision-Generator