微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSP-使用JSTL <c:out>核心标记防止XSS

如何解决JSP-使用JSTL <c:out>核心标记防止XSS

我基本上有一个大学作业,我们需要在给定的站点内查找并修复漏洞。 有一种表单可以接收用户输入并将其存储到数据库中(使用MysqL)并在网站上显示。当前,网站可以看到HTML和脚本标签并将其实现到网站中。我需要防止这种情况的发生,所以我相信C:out标记显示,而不是运行任何html或脚本标记

how the posts look

我尝试在表单中以及之前添加标记,并尝试了几种不同的方法,但是它没有用...任何建议或帮助将不胜感激。我对JSP和编码非常陌生!

这是页面代码

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="dbconnection.DBConnect"%>
<%@page import="java.sql.Connection"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="style.css" />
        <title>We love Trump!</title>
    </head>
    <body>
        <div id="container">
            <div id="mainpic">         
            </div>   

            <div id="menu">
                <ul>
                    <li class="menuitem"><a href="index.jsp">Home</a></li>
                    <li class="menuitem"><a href="quotes.jsp">Quotes</a></li>
                    <li class="menuitem"><a href="news.jsp">News</a></li>
                    <li class="menuitem"><a href="profile.jsp?id=<% if(session.getAttribute("userid")!=null){ out.print(session.getAttribute("userid"));} %>">Profile</a></li>
                    <li class="menuitem"><a href="forum.jsp">Members Forum</a></li>
                    <li class="menuitem"><a href="Validatelogout">logout</a></li>
                </ul>
            </div>

            <div id="content">
                
                    <%
        Connection con = new DBConnect().connect(getServletContext().getRealPath("/WEB-INF/config.properties"));
        if (session.getAttribute("isLoggedIn") != null && session.getAttribute("isLoggedIn").equals("1")) {
            out.print("Hello " + session.getAttribute("user") + ",Welcome to Our Forum !");
        }
    %>
                <h3>Create Post:</h3>

                <form action="forum.jsp" method="POST">
                    Title : <input type="text" name="title" value="" size="50"/><br/>
                    Message: <br/><textarea name="content" rows="2" cols="50"   ></textarea>
                    <input type="hidden" name="user"  value="<% if (session.getAttribute("user") != null) {
               out.print(session.getAttribute("user"));
           } else {
               out.print("Anonymous");
           } %>"/><br/>
                    <input type="submit" value="Post" name="post"/>

                </form>
                   

                <%
                    

                    if (request.getParameter("post") != null) {
                        String user = request.getParameter("user");
                        String content = request.getParameter("content");
                        String title = request.getParameter("title");
                        

                %>



                <%        if (con != null && !con.isClosed()) {
                    
                            Statement stmt = con.createStatement();
                            
                           // stmt.executeUpdate("INSERT into posts(content,title,user) values ('" + content + "','" + title + "','" + user + "')");
                            stmt.executeUpdate("INSERT into posts(content,user) values ('" +content + "','" + user + "')");
                            out.print("Successfully posted");
                        }
                    }

                %>

                <p>&nbsp;</p>
                <p>&nbsp;</p>
                <p>&nbsp;</p>
                <h3>List of Posts:</h3> 
                <%        if (con != null && !con.isClosed()) {
                        Statement stmt = con.createStatement();
                        ResultSet rs = null;
                        rs = stmt.executeQuery("select * from posts");
                        out.println("<table border='1' width='80%'>");
                        while (rs.next()) {
                            out.print("<tr>");
                            out.print("<td><a href='forumposts.jsp?postid=" + rs.getString("id") + "'>" + rs.getString("title") + "</a></td>");
                            out.print("<td> - Posted By ");
                            out.print(rs.getString("user"));
                            out.println("</td></tr>");

                        }
                        out.println("</table>");
                    }
                %>

                <div id="footer"><h3><a href="http://www.trump.com/">Trump Web Design</a></h3></div>
            </div>
        </div>
    </body>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。