这是一条“神奇”的评论
Posted 编程老高
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是一条“神奇”的评论相关的知识,希望对你有一定的参考价值。
几年前做项目,里面有个评论的功能,结果有人写了如下“神奇的”评论:
这些代码看不懂啊:<script type="text/javascript">alert(1);</script>
那么在显示这条数据时使用了EL表达式,问题来了:每次访问这个页面,上面JavaScript脚本都会执行
,怎么解决呢?不要着急,且听我娓娓道来
(不装逼
):
代码一—— 一个Servlet:
package com.ghj.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DataServlet extends HttpServlet {
private static final long serialVersionUID = -1706600494313811422L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("data", "这些代码看不懂啊:<script type=\\"text/javascript\\">alert(1);</script>");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
代码二—— 一个jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
</head>
<body>
第一种方法:${data}<br/>
第二种方法:<c:out value="${data}"/><br/>
第三种方法:<%=request.getAttribute("data") %><br/>
</body>
</html>
说明:上面使用三种不同的方法输出评论数据,通过实际操作会得出这样一个结论:只有第二种方法可靠,其它两种都会执行该JavaScript脚本;但是假如评论处使用了富文本编辑器,则又另当别论——这时还是用jstl,那么页面将面目全非。
【0分下载资源】
以上是关于这是一条“神奇”的评论的主要内容,如果未能解决你的问题,请参考以下文章