这是一条“神奇”的评论

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分下载资源

以上是关于这是一条“神奇”的评论的主要内容,如果未能解决你的问题,请参考以下文章

结束haml评论

PHP必用代码片段

动态 Rstudio 代码片段

效率神奇Github丧心病狂的9个狠招

erb模板中的一条评论如何?

out参数不用赋值?这么神奇吗!