对于网页中用户输入的特殊字符过滤方法

Posted maochenhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于网页中用户输入的特殊字符过滤方法相关的知识,希望对你有一定的参考价值。

背景

我们网页中需要用户填写一些信息,因为我们的网页比较特殊,是针对国际的用户,并且支持多种语言,线上发现用户会通过copy的方式填充输入,可能是从word等软件中copy的,带入了一些不可见的字符。

比如u200B这种零宽度的空格,以及一些看起来像半角空格的,含有这些字符后,会导致信息校验失败

 

解决方法

1.禁止用户copy

https://www.cnblogs.com/3box/p/5711498.html

 

2.限定输入范围,在输入改变时,替换非法字符

$("#inputId").on("keyup change", function () {
            var inputCurr = $(this).val();
            //p{C}是替换不可见字符
            //p{Zs}是替换空格为半角空格,全角空格也会被替换成半角空格
            var inputNew = inputCurr.replace(/[p{C}]/gu, ‘‘).replace(/[p{Zs}]/gu, ‘ ‘);

            if (inputCurr != inputNew) {
                $(this).val(inputNew);
            }
        });

 

  • 分隔符p{Z}

    • p{Zs}p{Space_Separator}:a whitespace character that is invisible, but does take up space.
    • p{Zl}p{Line_Separator}:line separator character U+2028.
    • p{Zp}p{Paragraph_Separator}:paragraph separator character U+2029.
  • 其它符号p{C}(包括不可见控制字符与未用码位
    • p{Cc}p{Control}ASCIILatin-1控制字符0x00-0x1F0x7F-0x9F
    • p{Cf}p{Format}:不可见的格式化指示字符。
    • p{Co}p{Private_Use}:私用码位
    • p{Cs}p{Surrogate}UTF-16编码的代理对的一半。
    • p{Cn}p{Unassigned}:未被使用的码位

 

 

参考资料

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

以上是关于对于网页中用户输入的特殊字符过滤方法的主要内容,如果未能解决你的问题,请参考以下文章

Exp9 web安全基础

网上安全方面的涉及到的方面(详解)

特殊字符的过滤,防止xss攻击

SpringBoot使用mica-xss防止Xss攻击

JAVA特殊字符过滤方法

什么输入法可以出入盲文点字模型,新增特殊字符