我的Unicode保护方案是否完整? 是否有内置的方法来保护Unicode字符串?

(我永远不会理解为什么这样的事情不是一个简单,好的函数,内置于PHP中,但是 而是必须单独研究,经常不正确,并由每个单独的程序员拼凑在一起的东西,但这里... ... </ p>

我执行以下操作来“清理”字符串(Unicode 来自用户/外部来源:</ p>

  $ string = preg_replace('#[[:cntrl:]]#','',$ string);  //删除所有“控制字符”。
$ string = preg_replace('#\ p {C} + #u','',$ string); //删除所有“不可见”字符。 (好像上面的控件不可见?)
</ code> </ pre>

这够了吗? 这是否会处理所有可滥用/怪异/特殊的Unicode字符? 对于想要恶意的人来说,整个Unicode似乎是一个梦想。 那些巨大的</ em>字符集中有很多奇怪的东西,似乎任何一个人都无法掌握它。</ p>

我错过了什么吗? 也许是</ em>这样的内置函数可以完成我的工作,只做得更好更完整? 如果没有,为什么? 有时感觉我是唯一一个关注安全/控制的人...... </ p>
</ div>

展开原文

原文

(I'll never understand why things like this isn't a simple, nice function, built into PHP, but rather something which has to be individually researched, often incorrectly, and cobbled together by every single individual programmer, but here goes...)

I do the following to "clean" strings (Unicode) coming from users/external sources:

$string = preg_replace('#[[:cntrl:]]#', '', $string); // Removes all "control characters".
$string = preg_replace('#\p{C}+#u', '', $string); // Removes all "invisible" characters. (As if the control ones above aren't invisible?)

Is this enough? Does this take care of all the abuse-able/weird/special Unicode characters? The whole Unicode thing seems to be a dream for people wanting to be malicious. There's so much weird stuff in that huge set of characters, seemingly impossible for any single person to get a grasp of.

Am I missing something? Maybe there is such a built-in function which does what I do, only better and more complete? If not, why is that? It sometimes feels like I'm the only one concerned with security/control whatsoever...

dosrmo0442
dosrmo0442 我认为这是个笑话?我很惊讶这个网站允许玩笑,因为我认真发布的任何内容都不被欣赏/理解......
大约一年之前 回复
douyi6290
douyi6290 我不想再重复一次。请在回复之前阅读。
大约一年之前 回复
dongxing7530
dongxing7530 \p{Is_Malicious},\p{Is_Stupid}将字符与恶意/愚蠢属性进行匹配。
大约一年之前 回复
dongxian8858
dongxian8858 正如目前所写,这个问题是不负责任的。你想为谁保护什么?例如,在聊天中,它完全可以使用RTL覆盖,隐形控制字符,表情符号,等等;如果聊天编程正确,所有这些奇怪的东西不应该影响任何更多的特定文本。所以请解释你的情景和你遇到的问题。否则这个问题可能因为登机而被关闭。
大约一年之前 回复
doushui5587
doushui5587 我不明白你的链接,除了视觉欺骗的东西,我认为相关但不严格是技术安全问题,不像强迫整个网页进入后向文本模式,或绕过一个单词的过滤器添加隐形字符。这就是我想要保证的。Unicode文本本身。我希望删除所有恶意/愚蠢的字符。(我已经使用“spoofchecker”来检查可疑的字符。)我仍然不明白我问的内容是什么不清楚,尽管......
大约一年之前 回复
dou47278
dou47278 无论如何,你可能正在寻找一个基于正则表达式的答案,或者对于内置的PHP解决方案,清理过滤器。
大约一年之前 回复
dti70601
dti70601 因为您在引用PHP时询问了Unicode,其中一些大型攻击面是SQL(注入)和HTML输出(XSS)。你没有指定用户输入做了什么,所以我试图覆盖通常的基础。如果我们严格讨论Unicode,甚至是最常见的漏洞,“视觉欺骗”,与控制或隐形字符几乎没有关系。
大约一年之前 回复
dongpengqin3898
dongpengqin3898 我的帖子没有提到关于HTML或SQL的单词。但是,它确实多次提到Unicode。我不知道你怎么可能得到我正在谈论HTML/SQL的想法?
大约一年之前 回复
duanlv5084
duanlv5084 我不确定我是否理解对Unicode的关注。Unicode只是一个商定的标准,用于查找键(代码点)映射到哪些字符;UTF-8是将文本编码为Unicode代码点的一种标准方法。关于Unicode没有太多固有的不安全感,事实上,你的控制字符替换是ASCII的一部分,但也包含在Unicode中。如果您准备用户提交的注释以便在HTML中进行回显,或者针对SQL注入,那么您的任何代码行都不能保护您免受XSS攻击。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐