Tag: punycode

如何检测同形文本,使用node.js进行unicode欺骗

用户可以在我们的网站上获得自己的子网站,以便www.example.com/subsite/gary成为特定的用户子网站。 然而,我担心可能会发生同形/ unicode欺骗攻击,其中恶意用户使用不同的用户名创build帐户,但是unicode字符与其他用户看起来是一样的,这样可以传递一个声称是gary的链接当它实际上是别人。 我看到这个看起来成熟的唯一的解决scheme是UCAPI http://www.casaba.com/products/UCAPI/,但我不想使用它,我想有一些与node.js一起工作。 (如果需要,我宁愿实施自己) 有没有人可以通过node.js检查这种同形/欺骗攻击?

Node.js Emojiparsing

我试图parsing一个传入的string,以确定它是否包含任何非表情符号。 我已经阅读了Mathias撰写的这篇伟大的文章,并利用本地punycode进行编码/解码,并为正则expression式生成regenerate生成。 我也使用EmojiData来获取我的emojis字典。 所有人都说,某些表情符号仍然是令人讨厌的小丑,并拒绝匹配。 对于某些表情符号,我继续得到一对代码点。 // Example of a single code point: console.log(punycode.ucs2.decode('💩')); >> [ 128169 ] // Example of a paired code point: console.log(punycode.ucs2.decode('⌛️')); >> [ 8987, 65039 ] Mathias在他的文章中提到了这个(并给出了punycode的例子),但即使使用他的例子,我也得到了一个不正确的回答: function countSymbols(string) { return punycode.ucs2.decode(string).length; } console.log(countSymbols('💩')); >> 1 console.log(countSymbols('⌛️')); >> 2 检测一个string是否包含所有emojis的最好方法是什么? 这是为了一个概念的certificate,所以解决scheme可以像需要那样的蛮力。 —更新— 上面我讨厌的表情多一点背景。 这些在视觉上是相同的,但实际上不同的unicode值(第二个来自上面的例子): ⌛ // \u231b ⌛️ // \u231b\ufe0f 第一个很好,第二个不好。 […]