问题标签 [punycode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
459 浏览

node.js - 如何使用 node.js 检测单应文字、unicode 欺骗

用户可以在我们的网站上获得他们自己的子网站,这样 www.example.com/subsite/gary 就会成为特定用户的子网站。

但是我担心单应性 / unicode 欺骗攻击的可能性,恶意用户使用不同的用户名创建一个帐户,但使用的 unicode 字符对其他人来说是相同的,这样就可以传递一个声称是 gary 的链接当它实际上是其他人时。

我见过的唯一看起来成熟的解决方案是 UCAPI http://www.casaba.com/products/UCAPI/但我不想使用它,我希望有一些适用于 node.js 的东西。(如果需要,我宁愿自己实现)

有没有人可以用 node.js 检查这些类型的单应性/欺骗攻击的例子?

0 投票
1 回答
440 浏览

c# - CookieContainer 不存储国际化域名的 cookie

我正在尝试使用 WebClient 对西里尔文域执行授权。授权经历了几个阶段,在普通域和 punicode 域之间进行重定向。问题是 HttpWebRequest 无法将 cookie 存储在分配的 CookieContaier 中,如果它是由 punycode 域设置的。例如,此代码将抛出 CookieException。

设置 cookie 的响应重定向到另一个页面,即在执行 WebClient.UploadValues(...) 之后,WebClient.ResponseHeaders 中没有 cookie 信息,这一事实加剧了这个问题。

下面是正常的授权过程(使用浏览器)

有什么解决方法吗?

0 投票
1 回答
1410 浏览

url - Why/how does the browser decide ☃.net goes to xn--n3h.net

If we type into firefox or chrome

http://☃.net/

It takes us to

http://xn--n3h.net/

Which is a mirror of unicodesnowmanforyou.com

What I don't understand is by what rules the unicode snowman can decode to xn--n3h, it doesn't look anything like utf-8 or urlencoding.

I think I found a hint while mucking around in python3, because:

But I still don't understand the xn-- part. How are domain names internationalised, what is the standard and where is this stuff documented?

0 投票
1 回答
53 浏览

punycode - punycode 如何区分相似的 IRI?

我一直在研究国际化资源标识符,但有一件事困扰着我。

我的理解是,对于域名中的每个标签(xyzzy.plugh.com具有三个标签,xyzzyplughcom,执行以下过程以将其转换为 ASCII 表示,以便所有旧版软件都可以对其进行处理:

  • 如果它仅由 ASCII 字符组成,则按原样复制。
  • 否则:
    • 首先我们输出xn--后跟所有 ASCII 字符(跳过非 ASCII)。
    • 然后,如果最后一个字符不是-,我们输出-以将 ASCII 与非 ASCII 分开。
    • 最后,我们使用 punycode 对每个非 ASCII 字符进行编码,使它们看起来是 ASCII。

那么我的问题是:我们如何区分以下两个 Unicode URI?

在我看来,这两个都将编码为:

仅仅是因为整个标签的测序信息已经丢失。

还是我在规范中遗漏了什么?

0 投票
1 回答
1810 浏览

java - Unicode 查询参数的 Punycode

我正在尝试使用 Punycode 对一些 Unicode URL 进行编码。这些 URL 有一个包含非 ASCII 字符的查询参数,例如:

问题是,当我尝试在 Java 中执行此操作时,生成的 URL 是错误的:

如果我这样做,结果字符串是不同的(我不知道为什么),但也是错误的:

如果我从 Chrome 复制地址并将其粘贴到这里,我会得到这个 URL,这就是我想要的:

我在这里做错了什么?

0 投票
3 回答
458 浏览

sitemap - 我可以在 robots.txt 和 sitemap.xml 中使用非拉丁字符吗?

我可以像这样在我的 robots.txt 文件和 sitemap.xml 中使用非拉丁字符吗?

机器人.txt

站点地图.xml

还是我应该这样做?

机器人.txt

站点地图.xml

0 投票
2 回答
9868 浏览

javascript - Node.js 表情符号解析

我正在尝试解析传入的字符串以确定它是否包含任何非表情符号。

我已经阅读了Mathias 的这篇很棒的文章,并利用本机punycode进行编码/解码和regenerate生成正则表达式。我还使用EmojiData来获取我的表情符号字典。

话虽如此,某些表情符号仍然是讨厌的小虫子,拒绝匹配。对于某些表情符号,我继续获得一对代码点。

Mathias 在他的文章中谈到了这一点(并给出了一个解决此问题的 punycode 示例),但即使使用他的示例,我也得到了不正确的响应:

检测字符串是否包含所有表情符号的最佳方法是什么?这是为了概念验证,因此解决方案可以根据需要使用蛮力。

- - 更新 - -

上面我讨厌的表情符号的更多上下文。

这些在视觉上是相同的,但实际上是不同的 unicode 值(第二个来自上面的示例):

第一个效果很好,第二个不行。不幸的是,第二个版本是 iOS 似乎使用的(如果你从 iMessage 复制和粘贴,你会得到第二个,当接收到来自 Twilio 的文本时,同样的事情)。

0 投票
1 回答
54 浏览

dns - 如何让我的域名在人们的网络浏览器中正确显示?

我购买了http://jørgensens.com,但是当我在浏览器中访问它时,它会将名称更改为http://xn--jrgensens-l8a.com/。我该如何解决这个问题,以便它向每个人显示我想要的名字?

0 投票
1 回答
718 浏览

node.js - 替换 Node.js + Express.js 中的主机名以解码 punycode 域

我正在西里尔文域上开发一个网络应用程序。目前,该域托管一个“停放页面”,表示该站点正在建设中。如果我在 Chrome 中访问它,我会在地址栏中看到 punycode。不过,Safari 会对其进行解码。出于开发目的,我修改了我的/etc/hosts文件,以便能够通过测试西里尔文域访问 localhost。但是,Chrome 和 Safari 都无法解码主机名。

我已经查找了这个问题,但找不到任何明智的解决方案。Node.js 有一个名为punycode. 现在,如果 myreq.url包含西里尔字符,它会被URIComponent编码,因此我编写了一个中间件来解码它:

它工作正常,我现在可以使用西里尔文路由。但是当我尝试将此逻辑应用于主机名时,它不起作用:

很感谢任何形式的帮助。谢谢!

0 投票
1 回答
82 浏览

php - 在 punycode 中搜索

我有一些punycodesmongoDB. 我需要用他们的母语搜索用户请求。如果用户输入了完整的地址,我可以找到它,但如果他输入了部分地址,那么我找不到它们。这不是一个真正的代码,但我做了这样的事情:

$query1在 return 中查找的$punycode任何尝试false。我怎样才能$query1找到$punycode