程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何清理 Url 中的所有 unicode 字符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何清理 Url 中的所有 unicode 字符?

开发过程中遇到如何清理 Url 中的所有 unicode 字符的问题如何解决?下面主要结合日常开发的经验,给出你关于如何清理 Url 中的所有 unicode 字符的解决方法建议,希望对你解决如何清理 Url 中的所有 unicode 字符有所启发或帮助;

我们有一个基于聊天的应用,我们的客户代表可以在其中与最终用户聊天。最近,我们的安全团队发现@R_787_9616@存在一个问题,即用户可以在聊天窗口中注入同形异义词版本的 Url。

例: 如果最终用户在聊天窗口中键入以下问题: 如何在 http://www.abcоs.ca

更改我的电子邮件设置

在上面的例子中,站点是同形异义版本,其中“оs.ca”是非ascii字符,而原始网址可能是http://www.abcos.ca (我只是编造了这些 url 示例)

所以我尝试在我的 JavaScript 中使用以下代码:

InvalID Expression term 'is' (CS1525)

上面的脚本运行良好,它去掉了非 ascii 字符,但是我们同时支持英语和法语聊天,

法语,如果 chatmessage 是“评论修饰符 mes paramètres de messagerIE sur http://www.abcоs.ca

然后它在消毒版本中用“e”替换“è”。

想知道是否有办法从 JavaScript 中的输入文本值检测 url 中的非 ascii 字符,以便预期结果是: "评论修饰符 mes paramètres de messagerIE sur http://www.abc" 以便法语字符仍保留在文本中,但 url 内的非 ascii 字符已被清理。

感谢专家的建议和指导。

解决方法

好的,

您可以在此处使用易混淆的支持列表 -> https://www.unicode.org/Public/security/10.0.0/confusables.txt

@https://www.npmjs.com/package/unicode-confusables 中还有一个 NPM 包,里面有这个数据

现在使用这些数据,我们可以检查是否有任何可混淆的内容并替换为正常的,或者只是替换为一些 glyth 以表明它是可混淆的,这可能是最好的选择,因为它让用户知道发布消息的人也许是一个不值得信任的人。

我在下面的代码段中还使用了一个 CDN 版本。

示例..

const tests = [
 "оs.ca","Comment modifier mes paramètres de messagerie sur http://www.abcоs.ca"
];


async function run() {
  const f = await fetch('https://cdn.jsdelivr.net/npm/unicode-confusables-data@10.0.0-20170721/confusables.json');
  const confusables = await f.json();
  
  function sanitize(a,show) {
    const chars = [...a];
    for (let l = 0; l < chars.length; l += 1) {
      const confused = confusables[chars[l]];
      if (confused !== undefined) {
         if (show) chars[l] = '?'; 
         else chars[l] = confused;
      }      
    }
    return chars.join('');
  }
  
  console.log('show confusables');
  for (const test of tests) 
    console.log(sanitize(test,truE));
    
  console.log('replace with none confusables');
  for (const test of tests) 
    console.log(sanitize(test,falsE));  

}



run();

@H_616_52@

大佬总结

以上是大佬教程为你收集整理的如何清理 Url 中的所有 unicode 字符全部内容,希望文章能够帮你解决如何清理 Url 中的所有 unicode 字符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。