学科分类
目录
Java Web

HTML注入

在JSP开发中,经常会提交一些包含“<”、“>”等特殊HTML字符的数据,如果程序不对这些特殊字符进行转换,浏览器将把这些特殊字符当做HTML标签进行解释执行,这就是所谓的“HTML注入”。接下来通过一个用户留言的案例来演示HTML注入,具体步骤如下:

(1)在Web工程chapter07的WebContent根目录中,新建一个displayMessage.jsp文件,displayMessage.jsp文件的具体实现代码如例1所示。

例1 displayMessage.jsp

1  <%@ page language="java" pageEncoding="UTF-8"%>

 2  <html>

 3  <body>

 4    <form action="ResultServlet" method="post">

 5      用户名:<input type="text" name="username"><br> 

 6      留 言:

 7      <textarea rows="6" cols="50" name="message"></textarea>

 8      <br> <input type="submit" value="提交">

 9    </form>

 10 </body>

 11 </html>

(2)编写ResultServlet,该Servlet用于获取用户名和留言内容,ResultServlet的具体实现代码如例2所示。

例2 ResultServlet.java

 1  package cn.itcast.chapter07.servlet;

 2  import java.io.IOException;

 3  import javax.servlet.*;

 4  import javax.servlet.http.*;

 5  public class ResultServlet extends HttpServlet {

 6    protected void doPost(HttpServletRequest request, HttpServletResponse 

 7        response) throws ServletException, IOException {

 8      request.setCharacterEncoding("UTF-8");

 9      String name = request.getParameter("username");

 10     String message = request.getParameter("message");

 11     request.setAttribute("name", name);

 12     request.setAttribute("message", message);

 13     request.getRequestDispatcher("/result.jsp")

 14         .forward(request, response);

 15   }

 16   protected void doGet(HttpServletRequest request, HttpServletResponse 

 17        response) throws ServletException, IOException {

 18     this.doPost(request, response);

 19   }

 20 }

(3)编写result.jsp文件,该文件用于显示用户名和留言内容,result.jsp的具体实现代码如例3所示。

例3 result.jsp

 1  <%@ page language="java" pageEncoding="UTF-8"%>

 2  <html>

 3  <head>

 4  <title>Insert title here</title>

 5  </head>

 6  <body>

 7    用户名:${name}<br />

 8    留言内容:${message}

 9  </body>

 10 </html>

(4)启动Tomcat服务器,在浏览器中输入URL地址http://localhost:8080/chapter07/displayMessage.jsp访问displayMessage.jsp页面,并在对应的输入框填写内容,具体如图1所示。

图1 运行结果

点击图1所示的“提交”按钮,浏览器显示的结果如2所示。

图2 运行结果

从图2可以看出,浏览器弹出了一个网页的消息窗口,说明浏览器将displayMessage.jsp文件中的JS代码当作普通HTML进行解析了,实现了“HTML注入”。

点击此处
隐藏目录