漏洞復現-CVE-2017-12629-RCE-solr:XXE
1.什麼是JSP內建物件
JSP內建物件是wed容器建立的一組物件
例子:
1 <% 2 int[] value = {60,70,80}; 3 for(int i:value){ 4 out.println(i); 5 } 6 %>
沒有進行宣告和建立,便可以使用out物件
2.常用的JSP內建物件
JSP內建物件包括request物件、response物件、session物件、out物件、application物件、page物件、exception物件、pageContext物件、config物件。這些物件在客戶端與伺服器互動的過程中完成不同的功能
1.Request物件 請求物件,用於客戶端通過HTTP協議連線傳輸到伺服器端的資料。 如:表單資料、網頁地址後的引數
2.Response物件 響應物件,用於向客戶端傳送資訊
3.Out物件 主要用於向客戶端瀏覽器輸出資料
4.session物件 用於保持在伺服器與客戶端之間需要保留的資料,比如網頁QQ登入,在會話視窗對話期間,要保持賬號的登入
5.Application物件 用於儲存使用者資訊、程式碼片段的執行環境 它可以被一個容器中的多個使用者所共享
6.page物件 用於處理JSP網頁,它指JSP頁面物件本身,或者代表編譯後的物件只有在JSP頁面中是合法的 相當於是this
7.exception物件 處理JSP檔案執行時發生的錯誤和異常 只有在page指令中指定才可在本頁面中使用exception物件
8.pageContext物件 用於管理網頁屬性,為JSP頁面包裝頁面的上下文,管理物件的訪問
9.config物件 程式碼片段配置物件,表示Servlet
分類:
1.輸出輸入類:request物件,response物件,out物件
2.通訊控制物件:pageContext物件,session物件,application物件
3.Servlet物件:page物件,config物件
4.處理錯誤物件:exception物件
3.request物件主要用於處理客戶請求
例如:客戶輸入賬戶密碼 可以用request中的方法進行接受傳輸
4.request物件常用方法
1.String getParameter() 根據表單元件的名稱提交資料
2.String[] getParameter() 獲取表單元件多個值時的請求資料
3.void setCharacterEncoding() 指定每個請求的編碼
4.RequestDispatcher getRequestDispatcher() 返回一個RequestDispatcher物件,該物件的forward()方法用於轉發請求
5.讀取資料
String name = request.getParameter("name");讀取單個數據
String[] aaa = request.getParameter("aaa");讀取多個數據
6.處理中文亂碼問題
7.處理中文亂碼問題2
開啟tomcat資料夾 然後開啟conf/server.xml
注意:UTF-8需要加引號,不然會報錯
8.JSP內建物件response(不能攜帶資訊)
response物件用於響應客戶請求並向客戶端輸出不同的資訊
從伺服器檢索到資訊通過設定response物件的響應引數等響應到客戶端
response.sendRedirect("welcome.jsp");
9.如何攜帶資訊跳轉
使用轉發取代重定向實現頁面跳轉
轉發的作用:在伺服器端,將請求傳送給伺服器上的其他資源,以共同完成一次請求的處理 (其他資源代表其他jsp檔案)
轉發的實現:RequestDispatcher物件的forward()方法
request.getRequestDispatcher(“welcome.jsp”).foward(request,response);
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp").foward(request,response);
10.轉發和重定向的區別
轉發:轉發是在伺服器端發揮作用,將同一請求在伺服器資源間進行傳遞
客戶端瀏覽器的位址列不會顯示轉向後的地址
重定向:重定向是在客戶端發揮作用,通過傳送一個新的請求實現頁面轉向
在位址列中可以顯示轉向後的地址