标签: zalgo

Zalgo文本如何工作?

我已经看到了奇怪的格式文本,称为Zalgo,如下面在各种论坛上写的.这看起来有点烦人,但它真的让我感到烦恼,因为它破坏了我对角色应该是什么的概念.我的理解是,一个角色应该在一条线上水平移动并保持在某个"容器"内.显然Zalgo文本是垂直移动的,似乎并不局限于任何空间.

这是Unicode中的错误/漏洞/漏洞/黑客攻击吗?这些个性角色是否具有奇怪的属性?"这是什么"在这里发生?


H̡̫̤̤̣͉̤ͭ̓̓̇͗ơ̯̗̘̮͒̄̈ͤ͡w͓͙͖̥͉̹͓͙͖̥͉̹͋ͬ̊ͦ͋ͬ̊ͦ̚̚d̳̘̿̔̏ͣ̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐͒s͙͔̺͇̗͙͔̺͇̗̿̊̇̿̊̇͞͞Z̆̊͊҉҉̠̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̢̖͇̬͍͇͓̖͇̬͍͇͓̔͋͊̓̔͋͊̓t̛͓̖̻ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇x͎̬̠͇̌ͤ̓̓͐͐͋͡ţ̗̹̝̗̹̝̄̌ͧͩ̄̌ͧͩ̕̕͢͢w͎̭̤͍͇̰̄͗ͭ͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟r̢̪͙͍̠ǩ̵̶̗̮̮ͪ?̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡


html unicode zalgo

676
推荐指数
2
解决办法
18万
查看次数

这些Unicode组合字符有什么用处,我们如何过滤它们?

กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็ ็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้

这些最近出现在Facebook评论部分.

我们怎样才能消毒这个?

unicode sanitize combining-marks zalgo

89
推荐指数
4
解决办法
5万
查看次数

如何防止像Zalgo文本这样的变音符号

是吧?

上面描绘的角色是几个月前由计算机安全专家MikkoHyppönen发推的,他以计算机病毒和TED谈论计算机安全而闻名.关于SO,我只会发布它的图像,但你明白了.这显然不是你想要在你的网站上传播并吓跑游客的东西.

经过进一步检查,该字符似乎是一个泰语字母和超过87个变音符号的字母(是否有限制?!).这让我想到了安全性,本地化以及如何处理这种输入.我的搜索引导我在Stack上提出这个问题,然后是迈克尔卡普兰关于剥离变音符号的博客文章.在其中,他演示了如何将字符串分解为其"基本"字符(为简洁起见,此处简化):

StringBuilder sb = new StringBuilder();
foreach (char c in "façade".Normalize(NormalizationForm.FormD))
{
    if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
        sb.Append(c);
}
Response.Write(sb.ToString()); // facade 
Run Code Online (Sandbox Code Playgroud)

我可以看到这在某些情况下是如何有用的,但就用户输入而言,它将剥离所有变音符号.正如卡普兰指出的那样,删除一些语言中的变音符号可以完全改变单词的含义.这引出了一个问题:如何在用户输入/输出中允许一些变音符号,但排除其他极端情况,例如MikkoHyppönen的超级字符?

c# unicode user-input diacritics zalgo

37
推荐指数
1
解决办法
6162
查看次数

符号显示不正确

符号是:ؤ

这个符号有什么特别之处,它来自哪里?

可以采取哪些措施来验证此类输入?或者甚至更好,这些符号如何正确显示(即不让它们与其他元素重叠)?

browser unicode validation text-rendering zalgo

30
推荐指数
3
解决办法
1196
查看次数

为什么这些泰语字符显示在长尾的网页上?

ด้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้дด็็็็็้้้้้็็็็้้้้้็็็็็้้้้้็็็็็้้้้้็็็็็้้้้้

我发现了一些有趣的字符,就像我粘贴在上面只有3个空格宽度.但是,字符串的实际长度为380.

我在python中检查了字符串,字符串编码如下:

"\ xe0\XB8\X94\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\XD0\XB4\xe0\XB8\X94\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\XB 9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9 \的x87\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89\xe0\xb9\X89'

似乎字符串是三个泰国字符的组合:

? \xe0\xb8\x94  THAI CHARACTER DO DEK

?  \xe0\xb9\x89  THAI CHARACTER MAI THO

?  \xe0\xb9\x87 …
Run Code Online (Sandbox Code Playgroud)

unicode zalgo

27
推荐指数
2
解决办法
9293
查看次数

如何防止Z͎̠͗ͣḁ̵͙̑l͖͙̫̉ͦ̾͊ͬg͔̤̞͓̐̓̒̽o͓̳͇̔ͥ文本?

我已经了解了Zalgo文本如何工作的,我正在研究如何通过聊天或论坛软件来防止这种烦恼.更确切地说,需要的完整的Unicode组合字符是什么:

a)要么被剥离,假设聊天参与者只使用不需要组合标记的语言(即你可以用组合标记写"未婚夫",但是如果你坚持做的话,你自己会有点Zalgo'ed所以); 要么,

b)减少到最多8个连续字符(实际语言中遇到最大值)?

编辑:与此同时,我发现了一个完全不同的措辞问题(" 如何防止......变音符号? "),这与此基本相同.我让它的标题更明确,所以其他人也会发现它.

javascript unicode diacritics combining-marks zalgo

17
推荐指数
3
解决办法
6416
查看次数

如何避免Zalgo文本在没有完全删除的情况下出血?

我们的网络服务受到了一些Zalgo文本的影响,我正试图为未来提出一个很好的解决方案.我们的策略是接受所有用户输入并将其保存在永久存储中(我们正确编码后端的输入,因此这部分是可以的).在输出阶段,我们通过带有白名单的过滤器/解析器运行原始用户输入,以避免XSS攻击和其他混乱.最近有些用户找到了Zalgo的世界,他们只是喜欢给其他人带来麻烦.

正如我所看到的,Zalgo文本只是一段从预期容器中泄漏出来的Unicode文本.因此,我认为自动删除所有复杂的组合字符是过于激烈的防御.有没有人知道一个CSS技巧来强制Zalgo文本包含在给定的父元素中而没有一些令人讨厌的副作用?

例如,如果我有

<section class="userinput">
... user input here ...
</section>
Run Code Online (Sandbox Code Playgroud)

如何确保用户输入不会泄漏到边界之外section.userinput?我猜overflow: hidden或者clip: rect(...)可能是正确的答案,但你对这个用例有什么更好的了解吗?我最好仍然可以使用section.userinput { max-height: 200vh; }或类似的东西,以避免用户创建人为的长评论.如果某些评论超过200vh,则应该只有一个滚动条来评论该评论.通常情况下,整个页面应该只有一个滚动条.

请注意,我只是想在视觉领域解决问题.我非常乐意接受任何有效的UTF-8序列作为用户输入,如果一个混乱的用户评论导致该用户评论看起来像垃圾,我很好.我只是想避免那个垃圾溢满了整个地方.具体来说,我不打算在显示之前阻止zalgo文本过滤类似zalgo的文本.

html css unicode zalgo

11
推荐指数
1
解决办法
916
查看次数

这些角色到底是什么?

我最近读了这篇关于堆栈溢出的文章:

\n\n

RegEx 匹配除 XHTML 自包含标签之外的开放标签

\n\n

顶部回复包含的文本看起来像是“出血”:

\n\n

ea\xcd\xa0ki\xcc\xa7n\xcd\x98g fr\xcc\xb6o\xcc\xa8m \xcc\xa1yo\xe2\x80\x8b\xcd\x9fur 眼睛\xcd\xa2s\xcc\xb8 \xcc\x9bl\ xcc\x95ik\xcd\x8fe liq\xe2\x80\x8buid 痛苦,re\xcc\xb8gular exp\xe2\x80\x8bression 解析的歌曲将 exti\xe2\x80\x8bnguish mor\xe2\x80\x8btal 的声音来自sp\xe2\x80\x8b的人在这里我可以看到它你可以看到\xcc\xb2\xcd\x9a\xcc\x96\xcd\x94\xcc\x99i\xcc\x82\xcd\x81\xcc\xa9t\ xcc\x81\xcc\x8b\xcd\x80\xcc\xb2\xcd\x8e\xcc\xa9\xcc\xb1\xcd\x94 它是美丽的 t\xe2\x80\x8bhe 最后的谎言\xe2\x80 \x8bs 的男人全部都失去了\xcc\x81\xcc\x8f\xcd\x84\xcd\x96\xcc\xa9\xcd\x87\xcc\x97\xcc\xaaT ALL I\xe2\x80\x8bS 失去了 pon \xcc\xb7y 他来了他 c\xcc\xb6\xcc\xaeomes 他来了 ich\xe2\x80\x8bor 渗透到我的脸我的脸 \xe1\xb5\x92h 上帝没有 NOO\xcc\xbcO\xe2\x80 \x8bO N\xce\x98 停止\xe2\x80\x8b*\xcd\x91\xcc\xbe\xcc\xbe\xcc\xb6\xe2\x80\x8b\xcc\x85\xcd\xab\xcd\ x8f\xcc\x99\xcc\xa4g\xcd\x9b\xcd\x86\xcc\xbe\xcd\xab\xcc\x91\xcd\x86\xcd\x87\xcc\xabl\xcc\x8d\xcd\xab\ xcd\xa5\xcd\xa8\xcd\x96\xcd\x89\xcc\x97\xcc\xa9\xcc\xb3\xcc\x9fe\xcc\x85\xcc\xa0s\xcd\x8ea\xcc\xa7\xcd\ x88\xcd\x96r\xcc\xbd\xcc\xbe\xcd\x84\xcd\x92\xcd\x91e n\xe2\x80\x8bot 重新\xcc\x80\xcc\x91\xcd\xa7\xcc\x8ca\ xcd\xa8l\xcc\x83\xcd\xa4\xcd\x82\xcc\xbe\xcc\x86\xcc\x98\xcc\x9d\xcc\x99 ZA\xcd\xa0\xcc\xa1\xcd\x8a\xcd \x9dLG\xce\x8c IS\xcd\xae\xcc\x82\xd2\x89\xcc\xaf\xcd\x88\xcd\x95\xcc\xb9\xcc\x98\xcc\xb1 TO\xcd\x85\xcd \x87\xcc\xb9\xcc\xba\xc6\x9d\xcc\xb4\xc8\xb3\xcc\xb3 TH\xcc\x98E\xcd\x84\xcc\x89\xcd\x96\xcd\xa0P\xcc\ xaf\xcd\x8d\xcc\xadO\xcc\x9a\xe2\x80\x8bN\xcc\x90Y\xcc\xa1 H\xcd\xa8\xcd\x8a\xcc\xbd\xcc\x85\xcc\xbe\xcc \x8e\xcc\xa1\xcc\xb8\xcc\xaa\xcc\xafE\xcc\xbe\xcd\x9b\xcd\xaa\xcd\x84\xcc\x80\xcc\x81\xcc\xa7\xcd\x98 \xcc\xac\xcc\xa9 \xcd\xa7\xcc\xbe\xcd\xac\xcc\xa7\xcc\xb6\xcc\xa8\xcc\xb1\xcc\xb9\xcc\xad\xcc\xafC\xcd \xad\xcc\x8f\xcd\xa5\xcd\xae\xcd\x9f\xcc\xb7\xcc\x99\xcc\xb2\xcc\x9d\xcd\x96O\xcd\xae\xcd\x8f\xcc\xae \xcc\xaa\xcc\x9d\xcd\x8dM\xcd\x8a\xcc\x92\xcc\x9a\xcd\xaa\xcd\xa9\xcd\xac\xcc\x9a\xcd\x9c\xcc\xb2\xcc \x96E\xcc\x91\xcd\xa9\xcd\x8c\xcd\x9d\xcc\xb4\xcc\x9f\xcc\x9f\xcd\x99\xcc\x9eS\xcd\xaf\xcc\xbf\xcc\x94 \xcc\xa8\xcd\x80\xcc\xa5\xcd\x85\xcc\xab\xcd\x8e\xcc\xad

\n\n

..

\n\n

单独看这些,它们看起来就像单个角色。它们是如何创建的?我怎样才能找到有关他们的更多信息?例如,“A”字符:

\n\n

A\xcd\xa0\xcc\xa1\xcd\x8a\xcd\x9d

\n\n

那是什么?

\n

utf-8 character-encoding zalgo

9
推荐指数
1
解决办法
1700
查看次数

这段文字怎么能在屏幕上运行?

对不起,我知道这有点像垃圾邮件,但这里是有问题的文字.

O_O

这是如何运作的?它是如何能够像这样运行页面的?

html unicode zalgo

9
推荐指数
1
解决办法
1758
查看次数

在Node.js设计模式中释放zalgo为什么异步路径是一致的?

在我正在阅读的伟大着作中,NodeJs design patterns我看到以下示例:

var fs = require('fs');
var cache = {};

function inconsistentRead(filename, callback) {
    if (cache[filename]) {
        //invoked synchronously
        callback(cache[filename]);
    } else {
        //asynchronous function
        fs.readFile(filename, 'utf8', function(err, data) {
            cache[filename] = data;
            callback(data);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

function createFileReader(filename) {
    var listeners = [];
    inconsistentRead(filename, function(value) {
        listeners.forEach(function(listener) {
            listener(value);
        });
    });
    return {
        onDataReady: function(listener) {
            listeners.push(listener);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

和它的用法:

var reader1 = createFileReader('data.txt');
reader1.onDataReady(function(data) {
console.log('First call data: ' + data);
Run Code Online (Sandbox Code Playgroud)

作者说,如果项目在缓存中,则行为是同步的,如果不在缓存中则是异步的.我很好.然后他继续说我们应该同步或异步.我很好.

我不明白的是,如果我采用异步路径,那么当 …

javascript asynchronous node.js zalgo

9
推荐指数
1
解决办法
946
查看次数