问题标签 [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.
node.js - 如何使用 node.js 检测单应文字、unicode 欺骗
用户可以在我们的网站上获得他们自己的子网站,这样 www.example.com/subsite/gary 就会成为特定用户的子网站。
但是我担心单应性 / unicode 欺骗攻击的可能性,恶意用户使用不同的用户名创建一个帐户,但使用的 unicode 字符对其他人来说是相同的,这样就可以传递一个声称是 gary 的链接当它实际上是其他人时。
我见过的唯一看起来成熟的解决方案是 UCAPI http://www.casaba.com/products/UCAPI/但我不想使用它,我希望有一些适用于 node.js 的东西。(如果需要,我宁愿自己实现)
有没有人可以用 node.js 检查这些类型的单应性/欺骗攻击的例子?
c# - CookieContainer 不存储国际化域名的 cookie
我正在尝试使用 WebClient 对西里尔文域执行授权。授权经历了几个阶段,在普通域和 punicode 域之间进行重定向。问题是 HttpWebRequest 无法将 cookie 存储在分配的 CookieContaier 中,如果它是由 punycode 域设置的。例如,此代码将抛出 CookieException。
设置 cookie 的响应重定向到另一个页面,即在执行 WebClient.UploadValues(...) 之后,WebClient.ResponseHeaders 中没有 cookie 信息,这一事实加剧了这个问题。
下面是正常的授权过程(使用浏览器)
有什么解决方法吗?
url - Why/how does the browser decide ☃.net goes to xn--n3h.net
If we type into firefox or chrome
It takes us to
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?
punycode - punycode 如何区分相似的 IRI?
我一直在研究国际化资源标识符,但有一件事困扰着我。
我的理解是,对于域名中的每个标签(xyzzy.plugh.com
具有三个标签,xyzzy
和plugh
)com
,执行以下过程以将其转换为 ASCII 表示,以便所有旧版软件都可以对其进行处理:
- 如果它仅由 ASCII 字符组成,则按原样复制。
- 否则:
- 首先我们输出
xn--
后跟所有 ASCII 字符(跳过非 ASCII)。 - 然后,如果最后一个字符不是
-
,我们输出-
以将 ASCII 与非 ASCII 分开。 - 最后,我们使用 punycode 对每个非 ASCII 字符进行编码,使它们看起来是 ASCII。
- 首先我们输出
那么我的问题是:我们如何区分以下两个 Unicode URI?
在我看来,这两个都将编码为:
仅仅是因为整个标签的测序信息已经丢失。
还是我在规范中遗漏了什么?
java - Unicode 查询参数的 Punycode
我正在尝试使用 Punycode 对一些 Unicode URL 进行编码。这些 URL 有一个包含非 ASCII 字符的查询参数,例如:
问题是,当我尝试在 Java 中执行此操作时,生成的 URL 是错误的:
如果我这样做,结果字符串是不同的(我不知道为什么),但也是错误的:
如果我从 Chrome 复制地址并将其粘贴到这里,我会得到这个 URL,这就是我想要的:
我在这里做错了什么?
sitemap - 我可以在 robots.txt 和 sitemap.xml 中使用非拉丁字符吗?
我可以像这样在我的 robots.txt 文件和 sitemap.xml 中使用非拉丁字符吗?
机器人.txt
站点地图.xml
还是我应该这样做?
机器人.txt
站点地图.xml
javascript - Node.js 表情符号解析
我正在尝试解析传入的字符串以确定它是否包含任何非表情符号。
我已经阅读了Mathias 的这篇很棒的文章,并利用本机punycode
进行编码/解码和regenerate
生成正则表达式。我还使用EmojiData来获取我的表情符号字典。
话虽如此,某些表情符号仍然是讨厌的小虫子,拒绝匹配。对于某些表情符号,我继续获得一对代码点。
Mathias 在他的文章中谈到了这一点(并给出了一个解决此问题的 punycode 示例),但即使使用他的示例,我也得到了不正确的响应:
检测字符串是否包含所有表情符号的最佳方法是什么?这是为了概念验证,因此解决方案可以根据需要使用蛮力。
- - 更新 - -
上面我讨厌的表情符号的更多上下文。
这些在视觉上是相同的,但实际上是不同的 unicode 值(第二个来自上面的示例):
第一个效果很好,第二个不行。不幸的是,第二个版本是 iOS 似乎使用的(如果你从 iMessage 复制和粘贴,你会得到第二个,当接收到来自 Twilio 的文本时,同样的事情)。
dns - 如何让我的域名在人们的网络浏览器中正确显示?
我购买了http://jørgensens.com,但是当我在浏览器中访问它时,它会将名称更改为http://xn--jrgensens-l8a.com/。我该如何解决这个问题,以便它向每个人显示我想要的名字?
node.js - 替换 Node.js + Express.js 中的主机名以解码 punycode 域
我正在西里尔文域上开发一个网络应用程序。目前,该域托管一个“停放页面”,表示该站点正在建设中。如果我在 Chrome 中访问它,我会在地址栏中看到 punycode。不过,Safari 会对其进行解码。出于开发目的,我修改了我的/etc/hosts
文件,以便能够通过测试西里尔文域访问 localhost。但是,Chrome 和 Safari 都无法解码主机名。
我已经查找了这个问题,但找不到任何明智的解决方案。Node.js 有一个名为punycode
. 现在,如果 myreq.url
包含西里尔字符,它会被URIComponent
编码,因此我编写了一个中间件来解码它:
它工作正常,我现在可以使用西里尔文路由。但是当我尝试将此逻辑应用于主机名时,它不起作用:
很感谢任何形式的帮助。谢谢!
php - 在 punycode 中搜索
我有一些punycodes
在mongoDB
. 我需要用他们的母语搜索用户请求。如果用户输入了完整的地址,我可以找到它,但如果他输入了部分地址,那么我找不到它们。这不是一个真正的代码,但我做了这样的事情:
$query1
在 return 中查找的$punycode
任何尝试false
。我怎样才能$query1
找到$punycode
?