我最近了解到,如果没有正确验证,过长的编码会导致安全风险。从前面提到的帖子中的答案:
例如,字符 < 通常表示为字节 0x3C,但也可以使用超长的 UTF-8 序列 0xC0 0xBC(或者甚至更多冗余的 3 或 4 字节序列)来表示。
和:
如果您采用此输入并在基于 Unicode 的基于字节的工具中处理它,则可能会避开该工具中使用的任何字符处理步骤。
这意味着如果我htmlspecialchars
在使用超长编码的字符串上使用,那么输出仍然可能包含标签。我还假设您可以发布也可用于 SQL 注入的类似字符(如"
或)。;
也许是我,但我相信这是一个相对较少人考虑甚至知道的安全风险。我已经编码多年,现在才发现这一点。
无论如何,我的问题是:我可以使用哪些工具来发送编码过长的数据?熟悉此风险的人:您如何在网站上进行测试?我想在我的网站上发布一堆过长的字符,但我不知道该怎么做。
在我的情况下,我主要使用 PHP 和 MySQL,但我真正想知道的是测试工具,所以我想后端情况并不重要。