[英]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>
将作为<script>alert('xss')</script>
打印到HTML输出<script>alert('xss')</script>
因此,就像最终用户自己输入的那样,在字面上显示在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.