我正在研究多字节字符及其使用方式,但有多少不同的标识符/ pasterns用于不同的多字节。
例如:&nbps;
,&#nbsp;
,U+0026
,%20
有多少个不同的标识符,例如&
,&#
,u+
,%
等?
我试图寻找输入,如果他们的单词长度超过255个字符,那么它可能是一个多字节(黑客尝试)然后我可以检查单词是否可以拆分具有多字节标识符然后停止黑客企图。
答案 0 :(得分:0)
您是否试图避免基于homoglyph的欺骗? 标识符是否意味着用户名?
如果是,如果您的用户使用拉丁字母,请仅允许ascii字母和数字:
$identifier = preg_replace('#[^A-Za-z0-9]+#', '', $identifier);
答案 1 :(得分:0)
%
格式 - 用于嵌入到URL中的网址编码值,例如%20是空格(ascii 20)
- 命名字符实体,在这种情况下为非破坏空间
U+0026
- 十六进制表示法中的unicode字符,本例中为&
&#...;
- 十进制的编号字符实体(base10)&
=&
&#x...;
- 十六进制的编号字符实体(基数为16):&
=&