首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >清除Spring应用程序中不需要的HTML输入

清除Spring应用程序中不需要的HTML输入
EN

Stack Overflow用户
提问于 2010-08-04 08:29:51
回答 2查看 2.6K关注 0票数 2

我需要整理web应用程序中的用户输入,以便删除某些HTML标记并编码< to >等。

我已经做了几个简单的util方法来剥离HTML,但是我发现自己在我的应用程序中到处添加了这些方法。

是否有更明智的方法来整理用户的输入?例如,在绑定过程中,还是某种程度上作为过滤器?

我见过可以充当servlet过滤器的JTidy,但我不确定这是否是我想要的,因为我需要清理用户输入,而不是我的JSP的输出。

从JTidy的主页:

它可以用作清理由动态web应用程序生成的格式错误的HTML的工具。 它可以在不更改输出的情况下验证HTML,并为每个页面生成警告,这样您就可以识别需要修复的JSP或Servlet。 它可以节省你的时间。用JSP或Servlets编写的HTML越多,节省的时间就越多。不要浪费时间手动查找问题,弄清楚为什么HTML不像它应该显示的那样显示。 除了JTidy验证之外,您还可以将动态生成的页面提交给在线HTML验证器,例如W3C标记验证服务、工具或,即使您在防火墙后面。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-04 09:01:31

我发现自己在我的应用程序中到处添加这些内容。

真的?有许多接受HTML的用户输入是不寻常的。大多数输入应该是纯文本,所以当用户输入<时,他们实际上得到了一个小于签名的标记,而不是一个(可能被整理/过滤掉的)标记。这需要在输出阶段进行HTML编码.通常情况下,您可以从<c:out>标记中获得这些信息。

(令人遗憾的是,JSTL之前的旧式JSP没有提供HTML编码器,因此,如果出于某种原因,您将不得不提供由字符串替换构建的自己的HTML编码方法,或者使用包含字符串的众多第三方工具中的一种。)

对于通常很少--如果--任何有意接受用户提供的HTML的“富文本”字段,您应该对它们进行强筛选,以防止标记中的JavaScript注入。这是一项艰巨的工作!“剥离HTML的几个简单的util方法”不太可能正确和安全地执行。

正确的方法是将输入的HTML解析成DOM;遍历它,检查是否只使用已知的安全元素和属性名称;然后将其序列化回格式良好的XHTML。有许多工具可以做到这一点,是的,jTidy就是其中之一。您将在输入字段值上使用Tidy.parseDOM方法,使用removeChildremoveAttribute从结果DOM中删除不必要的项,然后使用pprint重新序列化。

基于HTML的富文本的一个很好的替代方法是为用户提供一种更简单的文本标记形式,然后您可以将其转换为已知的安全HTML标记。就像这样我现在要输入文本框了。

票数 1
EN

Stack Overflow用户

发布于 2010-08-04 09:52:33

Spring中有阻断器接口,可用于对每个请求执行一些常见的操作。不管你用来整理的工具是什么,你都可以用它来得到你需要的东西。请参阅本手册以管理使用ut。只需将整理例程放入preHandle方法中,然后遍历HttpServletRequest中的数据来更新它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3403816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档