亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP學習之Java Web中的安全控制實例詳解

2020-07-27 21:31:00
字體:
來源:轉載
供稿:網友

本文實例講述了JSP學習之Java Web中的安全控制。分享給大家供大家參考。具體如下:

一、目標:

① 掌握登錄之后的一般處理過程;
② 能夠為每個頁面添加安全控制;
③ 能夠共享驗證代碼;
④ 使用過濾器對權限進行驗證;
⑤ 能夠對文件的局部內容進行驗證;
⑥ 掌握安全驗證碼的基本實現方式;
⑦ 通過異常處理增強安全性。

二、主要內容:

① 通過修改前面的登錄功能,分別對管理員和普通用戶的登錄進行處理;
② 為管理員才能訪問的頁面添加控制;
③ 共享各個頁面中的控制代碼,使用專門的文件,然后在需要的時候調用;
④ 使用過濾器降低重復驗證代碼;
⑤ 通過標準標簽庫完成頁面局部信息的安全控制;
⑥ 介紹安全驗證碼的基本實現方式;

1、完善登錄功能

正常情況下,管理員登錄成功之后跳轉到管理員默認工作界面;普通用戶登錄之后跳轉到普通用戶默認工作界面;用戶登錄失敗后跳轉到登錄界面重新登錄。
為了完成這個功能,需要編寫管理員界面和普通用戶界面。
管理員界面對應的文件為manager.jsp,代碼如下:

manager.jsp代碼:

復制代碼 代碼如下:
<%@ page contentType="text/html;charset=gb2312"%>

管理員操作界面

普通用戶界面對應的文件為commonuser.jsp,代碼如下:

commonuser.jsp代碼:

復制代碼 代碼如下:
<%@ page contentType="text/html;charset=gb2312"%>

普通用戶界面

修改登錄的Servlet,修改后的代碼如下:

LoginProcess.java代碼:

package servlet;import javabean.User;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginProcess extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       doPost(request,response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       // 獲取信息       String username = request.getParameter("username");       String userpass = request.getParameter("userpass");       // 調用JavaBean       User user = new User();       user = user.findUserByName(username);       String forward;       if(user==null){           forward="failure.jsp";       }else if(user.getUserpass().equals(userpass)){           if(user.getUsertype().equals("1")){              forward="manager.jsp";           }           else{              forward="commonuser.jsp";           }       }else{           forward="failure.jsp";       }       RequestDispatcher rd = request.getRequestDispatcher(forward);       rd.forward(request,response);    }}

2、為每個界面添加安全控制

上面的實例中登錄成功后會跳轉到管理員界面或者普通用戶界面,但是如果用戶直接輸入管理員界面,就會跳過登錄界面。例如用戶可以直接輸入:http://127.0.0.1:8080/ch11/manager.jsp。

為了解決這個問題,在每個有安全限制的界面都應該增加安全控制。需要完成兩項工作:

① 在登錄之后把用戶的信息寫入到session中;
② 在每個頁面中,從session中獲取信息進行驗證;

在登錄之后把用戶信息寫入到session中,下面是修改后的LoginProcess.java代碼:

LoginProcess.java代碼:

package servlet;import javabean.User;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginProcess extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       doPost(request,response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)           throws ServletException, IOException {       // 獲取信息       String username = request.getParameter("username");       String userpass = request.getParameter("userpass");       // 調用JavaBean       User user = new User();       user = user.findUserByName(username);       // 得到session對象       HttpSession session = request.getSession(true);       String forward;       if(user==null){           forward="failure.jsp";       }else if(user.getUserpass().equals(userpass)){           if(user.getUsertype().equals("1")){              // 在session對象中存儲信息              session.setAttribute("usertype","1");              forward="manager.jsp";           }           else{              session.setAttribute("usertype","0");              forward="commonuser.jsp";           }       }else{           forward="failure.jsp";       }       RequestDispatcher rd = request.getRequestDispatcher(forward);       rd.forward(request,response);    }}

以commonuser.jsp為例介紹如何在每個文件中進行安全控制,下面是修改后的代碼:

commonuser.jsp代碼:

<%@ page contentType="text/html;charset=gb2312"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><c:if test="${usertype!=/"0/"}">  <jsp:forward page="login.jsp"/></c:if>

普通用戶界面

這樣,如果不登錄而直接訪問commonuser.jsp就會跳轉到登錄界面。

3、采用專門的文件進行驗證

因為很多頁面都要編寫驗證的代碼,所以可以把這些代碼放在一個文件中進行共享,需要的使用調用共享文件。下面仍然以commonuser.jsp為例介紹如何實現驗證代碼的共享。

使用專門的文件存放共享代碼:

check.jsp代碼:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><c:if test="${usertype!=/"0/"}">  <jsp:forward page="login.jsp"/></c:if>

在需要驗證的文件中導入這個專門的文件。以commonuser.jsp為例:

commonuser.jsp代碼:

<%@ page contentType="text/html;charset=gb2312"%><%@ include file="check.jsp" %>

普通用戶界面

使用include指令包含目標文件,在把JSP轉換成Java文件的時候,會把目標文件的代碼拷貝到當前文件。
再運行測試,結果是相同的。

4、使用過濾器對權限進行驗證

把具有相同權限要求的文件放在相同的文件夾下,對文件夾的訪問進行統一的過濾。

編寫用于過濾的Servlet,代碼如下:

CommonCheck.java代碼:

package servlet;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CommonCheck extends HttpServlet implements Filter {public void doFilter(ServletRequest arg0, ServletResponse arg1,        FilterChain arg2) throws IOException, ServletException {    // 得到session    HttpSession session = ((HttpServletRequest)arg0).getSession(true);    // 得到用戶類型    String usertype = (String)session.getAttribute("usertype");    // 進行判斷    if(usertype==null || usertype.equals("1")){        ((HttpServletResponse)arg1).sendRedirect("./../login.jsp");    }    // 繼續調用其他的過濾器    try{        arg2.doFilter(arg0, arg1);    }catch(Exception e){}}public void init(FilterConfig arg0) throws ServletException {    // TODO Auto-generated method stub}}

配置過濾器,過濾器的配置與Servlet的配置非常類似,在web.xml中添加如下代碼:

<filter>  <filter-name>CommonCheck</filter-name>  <filter-class>servlet.CommonCheck</filter-class></filter> <filter-mapping>  <filter-name>CommonCheck</filter-name>  <url-pattern>/commonuser/*</url-pattern> </filter-mapping>

url-pattern中使用/commonuser/*,這樣只要訪問commonuser這個文件夾,就會訪問這個過濾器,如果用戶沒有登錄,將不能訪問目標文件。

測試:為了測試需要創建一個文件夾commonuser,把commonuser.jsp拷貝到commonuser文件中。

測試過程如下:

先直接訪問:http://127.0.0.1:8080/ch11/commonuser/commonuser.jsp,你會發現顯示的是登錄界面,就是因為沒有登錄而訪問了commonuser中的文件,過濾器進行處理,然后跳轉到登錄界面了。

然后在登錄界面輸入正確的用戶名和口令,然后再次在地址欄中輸入上面的地址,這時候會看到commonuser.jsp文件的內容。表示驗證通過。

5、對文件局部內容的安全進行控制

前面介紹的都是文件級別的安全控制,有時候需要對文件中部分內容進行安全控制,例如物品信息列表這樣的界面,如果當前用戶是管理員,則可以在其中完成管理功能,而對于普通用戶來說,而不可以,這就需要進行局部的控制。局部控制主要是通過標準標簽庫中的<c:if>標簽來完成。

6、安全驗證碼的基本實現方式

為了增強網站的安全性,很多網站采用了很多安全措施。例如SSL方式的訪問、U盾和口令卡(工商銀行)、信息加密等。安全驗證碼是現在比較流行的有效的一個安全措施,能夠有效的解決用戶通過遍歷所有可能的組合來破解密碼的問題。
基本工作原理如下:每次客戶端訪問服務器的時候,服務器會生成驗證碼,以圖形的形式顯示給用戶,同時在服務器上保留備份,用戶在提交信息的時候需要把驗證碼同時提交道服務器,服務器接收到驗證碼之后與服務器端的驗證碼進行比較,如果相同則進行處理。如果不同,則讓用戶重新輸入。因為每次都變化,所有用戶如果想破解密碼,首先要應付變化的安全驗證碼,所以加大了破解的難度。

7、通過異常處理增強安全性

有時候用戶的攻擊是根據網站所使用的服務器來進行了,因為很多服務器都有自己的bug。如果不能對異常進行有效的處理,錯誤信息會顯示在客戶端,從錯誤信息中可以讓客戶發現服務器的版本信息,這樣就為用戶的惡意攻擊提供了便利條件。

例如,用于輸入:http://127.0.0.1:8080/ch11/abc.jsp

而abc.jsp是一個不存在的文件,這時候如果不進行處理,會在客戶端顯示服務器的信息。

如果能夠對各種異常進行處理,不讓用戶看到你所使用技術和服務器,這樣客戶進行攻擊的難度就加大了。

曾經有一個學生作了這樣一件事情:使用JSP技術完成了一個網站,然后通過配置之后,客戶端訪問的時候,使用的文件后綴名都是php,給人的感覺就像是采用php技術編寫的網站。

希望本文所述對大家的JSP程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色免费三级| 欧美一级高清免费| 欧美一区三区三区高中清蜜桃| 91精品国产综合久久香蕉最新版| 日韩视频免费在线| 人妖精品videosex性欧美| 亚洲天堂一区二区三区| 亚洲精品黄网在线观看| 国产精品欧美日韩| 国内精品视频一区| 神马久久桃色视频| 亚洲性av网站| 久久中国妇女中文字幕| 亚洲欧美日韩一区二区三区在线| 精品自拍视频在线观看| 欧美色xxxx| 欧美日韩国产在线播放| 久久久人成影片一区二区三区观看| 欧美激情xxxxx| 亚洲精品乱码久久久久久金桔影视| 91精品国产91久久久久久久久| 国产精品久久久久秋霞鲁丝| 91麻豆国产精品| 亚洲欧洲黄色网| 高清欧美电影在线| 国产精品丝袜久久久久久高清| 麻豆成人在线看| 精品一区电影国产| 日本欧美爱爱爱| 国产精品久久不能| 国产精品日韩专区| 国产精品一区二区久久精品| 欧美午夜www高清视频| 国产精品91久久久久久| 国产精品444| 久久免费成人精品视频| 欧美成人午夜影院| 国产精品678| 日韩成人激情视频| 97视频在线观看免费| 国产这里只有精品| 久久综合免费视频| 国产精品亚洲第一区| 精品福利一区二区| 欧美自拍大量在线观看| 欧美视频二区36p| 日韩网站免费观看高清| 91免费看国产| 69av视频在线播放| 亚洲国产成人精品一区二区| 国产一区二区动漫| 国产精品狠色婷| 久久久久北条麻妃免费看| 91视频8mav| 欧美成人亚洲成人| 日本高清+成人网在线观看| 日韩av片免费在线观看| 精品人伦一区二区三区蜜桃免费| 欧美激情第6页| 高跟丝袜一区二区三区| 欧美日韩另类字幕中文| 一本色道久久综合亚洲精品小说| 欧美猛男性生活免费| 亚洲精品欧美日韩专区| 精品欧美一区二区三区| 亚洲一区二区三区乱码aⅴ| 亚洲成人久久一区| 欧美大尺度电影在线观看| 国色天香2019中文字幕在线观看| 狠狠躁18三区二区一区| 亚洲美女又黄又爽在线观看| 欧美午夜丰满在线18影院| 成人自拍性视频| 超碰日本道色综合久久综合| 欧美乱妇40p| 国产一区二区黑人欧美xxxx| 国产成人精品一区| 日韩成人小视频| 精品国产福利视频| 国产综合视频在线观看| 久久亚洲国产成人| 亚洲国产日韩一区| 国产日韩欧美另类| 欧美激情在线播放| 中日韩美女免费视频网站在线观看| 成人免费观看49www在线观看| 成年无码av片在线| 4388成人网| 精品女同一区二区三区在线播放| 97高清免费视频| 亚洲www视频| 亚洲国产精品一区二区三区| 欧美激情久久久| 亚洲激情视频在线播放| 欧美又大粗又爽又黄大片视频| 一区二区三区天堂av| 国产日韩精品在线观看| 亚洲欧美中文字幕| 日本免费一区二区三区视频观看| 久久精品久久久久久国产 免费| 久久久精品一区二区三区| 欧美成人午夜剧场免费观看| 亚洲日本中文字幕免费在线不卡| 91麻豆国产精品| 欧美激情久久久久| 欧美成人亚洲成人日韩成人| 亚洲欧美国产另类| 色妞色视频一区二区三区四区| 国产精品9999| 国产精品久久久久久久久久久新郎| 国产精品亚洲美女av网站| 欧美日韩中文字幕综合视频| 欧美激情视频三区| 精品视频中文字幕| 欧美性xxxx在线播放| 亚洲精品欧美日韩专区| 国产精品96久久久久久| 海角国产乱辈乱精品视频| 国产精品三级网站| 亚洲女人天堂av| 欧美福利小视频| 亚洲精品电影网在线观看| 欧美美最猛性xxxxxx| 国产丝袜一区二区| 色www亚洲国产张柏芝| 久久久久女教师免费一区| 欧美人在线观看| 一区二区三区 在线观看视| 亚洲欧洲高清在线| 亚洲a中文字幕| 亚洲综合精品一区二区| 在线播放国产一区中文字幕剧情欧美| 中文字幕av一区中文字幕天堂| 国产婷婷色综合av蜜臀av| 色婷婷成人综合| 91精品国产高清自在线| 日韩亚洲成人av在线| 亚洲免费人成在线视频观看| 欧美国产精品日韩| 久久精品国产视频| 91香蕉嫩草影院入口| 欧美激情手机在线视频| 日本乱人伦a精品| 最新91在线视频| 欧美日韩国产一区二区| 欧美精品在线免费播放| xvideos亚洲人网站| 国产美女被下药99| 国产精品成人一区二区三区吃奶| 久久久久久久久久久免费| 国内成人精品视频| 国产999精品视频| 久久精品国产久精国产一老狼| 亚洲自拍小视频免费观看| 欧美日韩亚洲网| 97免费在线视频| 亚洲色图在线观看| 欧美午夜精品久久久久久人妖| 日本高清+成人网在线观看| 欧美激情va永久在线播放| 91精品国产综合久久久久久久久| 亚洲人免费视频| 亚洲天堂色网站| 伊人激情综合网|