繁体   English   中英

如何检查内容是否是纯文本?

[英]How to check if the content is plain text or not?

我有一个纯文本区域,我只接受用户的纯文本。 我想确保用户不在文本区域中放置任何标记。 我还假设用户可以使用不同的语言发布。 那么,在服务器端(使用java)和客户端(使用jquery)验证内容的最佳方法是什么。

在这方面的任何帮助将不胜感激。

更新:如果问题不够明确,我很抱歉。 为了简单起见,这就是我想要做的 - 我让用户在textarea中输入文本(这里没有富文本框)。 对于文本区域中的每个双新行,我想在HTML页面中显示一个段落。 我该怎么做?

验证HTML内容的用户输入没有多大意义。 您可以在网页上重新显示此用户输入时转义HTML。 由于您提到您在服务器端使用Java,因此您可能使用JSP作为视图技术,因此最好知道您可以使用JSTL <c:out>标记和fn:escapeXml()函数来逃避打印到输出之前的HTML。

例如,当重新显示用户控制的输入时:

<c:out value="${somebean.sometext}" />

或者在重新显示用户提交的请求参数时:

<input type="text" name="foo" value="${fn:escapeXml(param.foo)}" />

这种方式例如<script>alert('xss')</script>将作为&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;打印到HTML输出&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt; 因此,就像最终用户自己输入的那样,在字面上显示在HTML中。


如果你真的坚持要验证这一点,你最终可以为此获取像Jsoup这样的HTML解析器。

String text = request.getParameter("text");

if (!text.equals(Jsoup.parse(text).text())) {
    // There was HTML in the text.
}

根据您实际想要根据HTML白名单清理输入以删除潜在恶意标记的评论进行更新 您也可以使用Jsoup执行此操作,另请参阅此页面

String sanitized = Jsoup.clean(text, Whitelist.basic());

Whitelist#basic()的允许元素在API文档中指定。

如果它是你想要阻止的HTML标记,你可以使用正则表达式,如果它看到一个V形符号(<)就会抛出错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM