码迷,mamicode.com
首页 > 其他好文 > 详细

这是一条“神奇”的评论

时间:2016-03-04 22:46:07      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

        几年前做项目,里面有个评论的功能,结果有人写了如下“神奇的”代码:

这些代码看不懂啊:<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,那么页面将面目全非。

这是一条“神奇”的评论

标签:

原文地址:http://blog.csdn.net/gaohuanjie/article/details/50802242

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!