欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EL表达式中含有HTML标签|EL表达式防止XSS注入|EL表达式原样输出内容|JSP中输出特殊符号

程序员文章站 2022-06-08 19:39:09
...

问题:

最近在复习JAVAEE,做邮件管理系统的项目时候遇到了一个问题:

如果用户发送邮件的内容包含HTML标签,接收到邮件的一方页面样式就会发生改变.

EL表达式中含有HTML标签|EL表达式防止XSS注入|EL表达式原样输出内容|JSP中输出特殊符号EL表达式中含有HTML标签|EL表达式防止XSS注入|EL表达式原样输出内容|JSP中输出特殊符号 此处说明HTML标签被解析了,让我们看看出现问题的代码

				<div class="content">
					<div class="message">
							<div class="tmenu">
								<ul class="clearfix">
									<li>标题: ${requestScope.get("title")} </li>
									<li>来自:${requestScope.get("sender")}</li>
									<li>时间:${requestScope.get("time")}</li>
								</ul>
							</div>
					  	 	<div class="view">
								<p>${requestScope.get("content")}</p>
							</div>
					</div>

解决方式:

使用taglib的function标签库: fn:escapeXml()方法

							<div class="tmenu">
								<ul class="clearfix">
									<li>标题: ${fn:escapeXml(requestScope.get("title"))} </li>
									<li>来自:${fn:escapeXml(requestScope.get("sender"))}</li>
									<li>时间:${fn:escapeXml(requestScope.get("time"))}</li>
								</ul>
							</div>
					  	 	<div class="view">
								<p>${fn:escapeXml(requestScope.get("content")}</p>
							</div>

或者使用JSTL标签库的<c:out>
<c:out value=“值” default=“默认值” escapeXml=“true”></c:out>

总结:

不光要知道怎么解决出现的问题,还要想到从根源上防止问题的发生,我们可以在发送邮件时就进行正则表达式的过滤,这样就从根源上杜绝了XSS注入的可能性.
EL表达式中含有HTML标签|EL表达式防止XSS注入|EL表达式原样输出内容|JSP中输出特殊符号

相关标签: 干货