【发布时间】:2015-09-18 13:22:56
【问题描述】:
我们有一个 node js 应用程序,我们最近从在 IIS 7 上运行(通过 IIS 节点)转移到在 Linux 上运行(Elastic Beanstalk)。自从我们切换后,我们收到了很多非 UTF-8 url 被发送到我们的应用程序(主要来自爬虫),例如:
Bj%F6rk IIS 将其转换为 Björk。这现在被传递给我们的应用程序,我们的网络框架(express)最终调用到
decodeURIComponent('Bj%F6rk');
URIError: URI malformed
at decodeURIComponent (native)
at repl:1:1
at REPLServer.self.eval (repl.js:110:21)
at repl.js:249:20
at REPLServer.self.eval (repl.js:122:7)
at Interface.<anonymous> (repl.js:239:12)
at Interface.emit (events.js:95:17)
at Interface._onLine (readline.js:203:10)
at Interface._line (readline.js:532:8)
at Interface._ttyWrite (readline.js:761:14)
有没有推荐的安全方法,我们可以在将 url 字符串发送到 express 之前执行与 IIS 相同的转换?
牢记在心
- 我们正在接收对这些编码错误的 URL 的请求,并且
- 有一种方法可以使用deprecated
unescapejavascript function 和 对它们进行解码
-
对这些 URL 的大部分请求来自 Bing Bot,我们希望尽量减少对我们搜索排名的不利影响。
- 我们真的应该对所有传入的 URL 都这样做吗?
- 我们是否应该关注任何安全或性能影响?
- 我们应该担心
unescape在不久的将来会被删除吗? - 有没有更好/更安全的方法来解决这个问题(是的,我们确实阅读了上面链接的 MDN 文章)
【问题讨论】:
标签: javascript node.js iis url-encoding bing