jsp安全性问题

jsp项目不同jsp之间假设只通过超链接进行跳转,安全性太低,不能满足现实生活中对安全性的要求!

为了提高安全性。能够通过Servlet进行跳转,进行跳转的时候为了进一步实现其安全性,能够通过间jsp文件放在WEB-INF目录里面。这样安全性就能得到提升。可是问题伴随而来,放在WEB-INF目录里面,怎样进行訪问?

能够实现的一种思路:另建一个Servlet类作为页面跳转的中转站!将须要使用到的放在WEB-INF目录里面的文件通过使用id进行区分,在须要訪问到这些jsp文件的时候直接通过中转站然后获得要訪问的jsp的id,即能够进行对应的页面跳转。

新建的Servlet类代码例如以下:

package cn.edu.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 MNG extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String id = request.getParameter("id");
        //从页面获得的用户区分跳转页面的id
        System.out.println("id="+id);
        //我调试的时候使用的,并没实用
        if(id.equals("1")){
             request.getRequestDispatcher("/index.jsp").forward(request,response);
        }else if(id.equals("2")){
            request.getRequestDispatcher("/WEB-INF/admin/add.jsp").forward(request,response);
        }else if (id.equals("3")) {
            request.getRequestDispatcher("/WEB-INF/admin/bisai.jsp").forward(request,response);
        }else if (id.equals("4")) {
            request.getRequestDispatcher("/WEB-INF/admin/gamema.jsp").forward(request,response);
        }else if (id.equals("5")) {
            request.getRequestDispatcher("/WEB-INF/admin/manager.jsp").forward(request,response);
        }else if (id.equals("6")) {
            request.getRequestDispatcher("/WEB-INF/admin/message.jsp").forward(request,response);
        }else if (id.equals("7")) {
            request.getRequestDispatcher("/WEB-INF/admin/modify.jsp").forward(request,response);
        }else if (id.equals("8")) {
            request.getRequestDispatcher("/WEB-INF/admin/pk.jsp").forward(request,response);
        }else if (id.equals("9")) {
            request.getRequestDispatcher("/WEB-INF/admin/result.jsp").forward(request,response);
        }
    }
}

进行跳转的页面代码例如以下:

<form action="AddServlet" method="post">
            <label>比赛编号:</label><input type="text" name="id" placeholder="请输入比赛编号"/><br />
            <label>比赛名称:</label><input type="text" name="gamename" placeholder="请输入比赛名称"/><br />
            <label>比赛时间:</label><input type="text" name="gametime" placeholder="*格式:YYYY.MM.DD"/><br />
            <label>比赛地点:</label><input type="text" name="gameaddress" placeholder="请输入比赛地点"/><br />
            <label>人数限制:</label><input type="text" name="gamenum" placeholder="*格式:请填写整数"/><br />
            <label>报名截止:</label><input type="text" name="deadline" placeholder="*格式:YYYY.MM.DD"/><br />
            <!--
            <form action="" method="post"><input type="submit" value="加入"></form>
            <form action="tennis_game/WebRoot/WEB-INF/bisai.jsp" method="post"><input type="button" value="返回"></form>
             -->
            <button type="submit" value="加入">加入</button>
            <a href="MNG?id=3"><button type="button" value="返回">返回</button></a>
        </form>

通过id进行跳转。

还有一种方法比較简单,不用讲所有的jsp文件所有都放在WEB-INF文件以下。只通过将登陆页面要跳转的目标页面放入WEB-INF文件下即可了,通过登陆页面跳转的 Servlet类中通过会话对象session获取用户的账户密码,然后在每个页面的開始通过JavaScript来验证是否登陆。

function checkNull(){
    if(document.getElementById("id").value=="" || document.getElementById("id").value==null)
        {
            alert("帐号不能为空!");
            document.getElementById("id").focus();
            document.getElementById("id").select();
            return false;
        }
        if(document.getElementById("pass").value=="" || document.getElementById("pass").value==null)
        {
            alert("密码不能为空!

");
            document.getElementById("pass").focus();
            document.getElementById("pass").select();
            return false;
        }
    if(document.getElementById("password").value!=document.getElementById("password2").value)
        {
            alert("两次密码输入不一致!");
            document.getElementById("password").focus();
            document.getElementById("password").select();
            return false;
        }
        if(document.getElementById("name").value=="" || document.getElementById("name").value==null)
        {
            alert("姓名不能为空!");
            document.getElementById("name").focus();
            document.getElementById("name").select();
            return false;
        }
        else return true;
}

管理员登录界面确保安全性:

<%
    String adminid = (String)session.getAttribute("adminname");
    if(adminid==null){
    %>
    <script type="text/javascript" language="javascript">
    alert("你还没有登录。。。");
    window.document.location.href="/TennisMatch/welcome";
    </script>
<%
}
 %>
时间: 2024-12-13 06:50:07

jsp安全性问题的相关文章

安全渗透 by80

1章    内容:端口 命令 1,端口,这个很让人理解的字眼,电脑的端口一共有65535个,但实际用到的却只有几十个,常见的端口 3389,4899,135,445,5900,1433,3306,1521,21,80,23,25,53等等,端口就像一座房子的烟囱一样,如果打开了,就可能会面临着一些风险,如3389,这是远程桌面的端口,他主要用于两个方面,一是实现网络交互的过程,一台电脑连接到另外一台电脑的桌面,第二个方面就是被黑客的提权利用,命令是MSTSC,而3389端口入侵正是实现了这样的功

page、request、session、application区别【转载】

(1)直接在web contain中进行对象的实例化. 内置对象 类型 作用域 pageContext javax.servlet.jsp.pageContext page request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse page session javax.servlet.http.HttpSession session applicati

JSP_2_JSP基本语法

JSP:Java Sever Page,一个简化的Servlet 主要技术JSP 安全性高,Asp.net 简单,Php 简单高效(LAMP:Linux+Apache+MySql+Php) ---2-3 JSP页面元素构成--------------------------------------------------------------------------------------- 2-3 JSP页面元素构成 1 指令: <%@ 编译指令名 属性名="属性值"...

比较page、request、session、application的使用范围(转自用)

(1)直接在web contain中进行对象的实例化. 内置对象 类型 作用域 pageContext javax.servlet.jsp.pageContext page request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse page session javax.servlet.http.HttpSession session applicati

【转】比较page、request、session、application的使用范围

(1)直接在web contain中进行对象的实例化. 内置对象 类型 作用域 pageContext javax.servlet.jsp.pageContext page request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse page session javax.servlet.http.HttpSession session applicati

不用动手术的肝脏清洗法

几乎每个人体内都有肝胆结石,或许很多人只知道胆结石,不知道肝脏内也有结石,也不知道其实很多胆结石的初期就是在肝脏内形成的,更不知道吃夜宵.晚饭在7点之后吃.吃油炸食品.甚至喝水较少也会导致肝胆结石.就以上几个不良生活习惯,我们每个人占多少?简单的讲,肝脏是人体内最大的器官,它是人体的解毒工厂,它的构造极其复杂,所以至今为止,人类无法设计出人造肝脏,它的复杂度仅次于脑组织.所以让肝脏维持正常功能直接关系着人体的健康.肝脏可以使激素,酒精以及某些有害药物在体内失效.各种人体无法代谢的毒素都会由肝脏负

导演与明星老婆离婚 恋亲手捧红干女儿

http://www.ehotelier.cn/Thread.jsp?tid=182934http://www.ehotelier.cn/Thread.jsp?tid=182940http://www.ehotelier.cn/Thread.jsp?tid=182946http://www.ehotelier.cn/Thread.jsp?tid=182951http://www.ehotelier.cn/Thread.jsp?tid=182957http://www.ehotelier.cn/T

02_08 JSP内置对象之Web安全性及config对象

一.web安全性 1.放在WEB-INF文件夹上的文件是无法被用户所见,若用户需要访问,则需要通过映射的方式. 如 <%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head> <title>include</title> </head> <body> <h2><%="hello&q

jsp笔记总结

第一章 JavaWeb简介 1.什么是Web应用程序 什么是Web应用程序是一种通过Web访问的应用程序.Web应用程序一个最大优点就是用户很容易访问.用户只需要有浏览器即可,不需要再安装其他软件.Web开发是目前软件开发领域的三大方向之一.(桌面应用程序,Web应用程序,嵌入式应用程序) 2.静态页面与动态页面 静态网页 表现形式:网页内容固定,不会更新. 所需技术:HTML,CSS 动态网页 表现形式:网页中的内容通过程序动态的显示,自动更新,能与用户进行交互(比如登录输入正确用户名和密码时