对输入文字的敏感词过滤以及 XSS 特殊字符过滤什么方案比较好?

java web 项目里

post 提交的内容里,其实有很多输入不需要敏感词过滤以及 XSS 特殊字符过滤

譬如 select 下拉框选项,输入都是确定的内容

只是那些文本框 input 需要过滤

如果用过滤器,那就会对所有的输入进行过滤

这显然不太好,开销太大

对输入文字的敏感词过滤以及 XSS 特殊字符过滤什么方案比较好?

我现在做法

@Override
public String getParameter(String name) {
    String value = super.getParameter(name);
    if (value != null) {
        value = filterSensitiveWords(value);
    }
    return value;
}

但是这样做不到区别对待
最关键的是: 如何区分对待

阅读 7.9k
7 个回答

只要内容是用户产生的,都要“原样显示”。后端模板都有相关机制处理,前端的框架也有。

前端产生的数据并不可靠,懂行的人可以轻易绕过前端设置的各种校验规则。
安全起见,后端在入库前应对前端产生的所有数据进行过滤处理。
这点性能开销,远比留下安全隐患划得来。

可以自定义一个文本框input html标签,带有一个特殊的属性,给希望过滤的input标签加上这个属性,后台根据属性判断是否过滤

要看内容格式,如果是 JS 的话,可以考虑Apache commons-lang escapeJavascript 方法

可以用别人的,比如163的 dun.163.com

全部统一过滤,含有富文本的单独过滤

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题