1. 程式人生 > >利用ssh遍歷資料庫的奇技淫巧

利用ssh遍歷資料庫的奇技淫巧

最近,筆者學習了ssh之後瞬間覺得世界的美好,因為,對比之前簡陋的servlet,ssh顯然用的更為方便,功能也更為強大,但是,昨日,筆者遇到了一個問題,在利用ssh搭建一個User管理系統時,管理員介面是http://localhost:8080/SSH_03/User/list,能夠在沒有管理員登入的情況下,只向cherome輸入以上地址就可以訪問資料庫,這是相當危險的!!因為遍歷資料庫採用的是struts的標籤
<s:iterator>
進行遍歷,但不知為何,在不觸發list的方法下,值棧中並沒有users,關於這一點我也很鬱悶,所以之前一直使用
<a href="list">查閱</a>


將users匯入進list.jsp導致了這一安全問題,關於這個問題我現在先對它進行詳細的闡述,稍後再提出我自己的解決方案

<table border="1"     width = "1000"  cellspacing="0">
<tr><th>姓名</th><th>密碼</th><th>id</th><th  colspan="2" >操作</th></tr>
<s:iterator value = "users" id = "user">
<tr>
<td><s:property value = "#user.name"/></td> <td><s:property value = "#user.pwd"/></td> <td><s:property value = "#user.id"/></td> <td><a href = "delete?id=<s:property value = "#user.id"/>">刪除</a> </td> <td><a href
= "updateinput?id=<s:property value = "#user.id"/>
">更新</a></td> </tr> </s:iterator> </table>

這是我的list.jsp


    public String list(){       

            ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");           
            UserServiceInter usi =    (UserServiceInter) ac.getBean("userService");         
            users = usi.list();
            return SUCCESS;

    }

這是UserAction中關於遍歷的方法,其中
private List<User> users;
私以為在list.jsp應該會出現資料庫中相應的資料的,然而,並沒有,所以在前期我在list.jsp加入了一段程式碼<a href="list">查閱</a>
對應struts.xml
<action name="list" class = "com.bj.action.UserAction" method = "list">
<result>/User/list.jsp</result>
</action>
隨後問題就出現了,如同我開始所述,最終解決的方案是在list.jsp建立一個隱藏表,輸入id號,再在UserAction對id號進行校驗,如果正確就遍歷,這樣就解決了問題

<form action="list" method = "post">
 <input type = "hidden" value = "520" name = "id"/> 
 <input type = "submit" value = "查詢"/> 
</form>

對應的UserAction變為
` public String list(){

        if (id==520){            
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");           
        UserServiceInter usi =    (UserServiceInter) ac.getBean("userService");         
        users = usi.list();
        return SUCCESS;
        }else{
            return "error";
        }    
}

`
問題解決,以上。

+++++++更新++++++++

今天看書才知道,其實可以將返回頁面的jsp檔案放在工程的web-inf目錄下,就可以實現角本搜尋禁止了T.T

相關推薦

利用ssh資料庫

最近,筆者學習了ssh之後瞬間覺得世界的美好,因為,對比之前簡陋的servlet,ssh顯然用的更為方便,功能也更為強大,但是,昨日,筆者遇到了一個問題,在利用ssh搭建一個User管理系統時,管理員介面是http://localhost:8080/SSH_03

黑暗中的生物:利用快活生存

not 正在 ever reading 自己的 which cat 世界 round 今日導讀 如果讓你在伸手不見五指的黑暗當中生存,你能熬過幾天呢?而大千世界,無奇不有。在很多你不知道的角落,有些生物在完全黑暗的世界裏不僅活得相當快活,還進化出了各種令人瞠目結舌的驚奇技能

Python利用協程加速百度百科詞條爬蟲

前一個系列文章主要利用百度AI的Python SDK進行影象識別、語音合成、語音識別,實現了一些有趣的小案例,實際上百度AI的功能遠不止這些,更多高逼格的東西例如NLP、輿情分析、知識圖譜等有待大家進一步發掘。 學習Python中有不明白推薦加入交流群     &

關於字符串和文件流的

童鞋 err pen spa 關於 文件大小 ood c_str 64bit 早早起來,發一篇來概括一下昨天晚上搞到深夜才學到的一些字符串和文件流的簡單操作。 (寫在前面:以下所有的文件流都以輸入文件流為例,另外這種文件讀寫方式與競賽時使用的有較大差別,NOIP黨裏C++剛

Mysql數據閃回的(binlog2sql)

mysql binlog2sql 一、概述binlog2sql是一個開源項目,應用於大眾點評線上環境。類似於ORACLE中的閃回功能,binlog2sql可以基於時間點或者位置偏移量進行數據恢復。從MySQL binlog解析出你要的SQL。根據不同選項,你可以得到原始SQL、回滾SQL、去除主鍵的I

CSS布局:各種居中

設置 ybds orm 必須 解決 html prim 分享 post CSS布局奇技淫巧:各種居中 2017-08-23 無雙 前端開發 作者:無雙 鏈接:www.cnblogs.com/2050/p/3392803.html 居中是我們使用css來布局時常

C#開發一:調試windows系統服務

選項 nbsp 調試 方法 href info bubuko 系統 .html 原文:C#開發奇技淫巧一:調試windows系統服務windows系統服務不能直接運行,只能在安裝完服務之後啟動、暫停、繼續、停止服務,導致服務的調試不能使用一般的斷點調試。 要調試系統服務,

C#開發二:根據dll文件加載C++或者Delphi插件

man int cnblogs 需要 pat method msg initial 函數指針 原文:C#開發奇技淫巧二:根據dll文件加載C++或者Delphi插件 這兩天忙著把框架改為支持加載C++和Delphi的插件,來不及更新blog了。 原來的

javascript 向下取整

mat asc floor math 轉化 java 目的 奇技淫巧 移位運算 let a=5/4|0 輸出a=1 利用了javascript在進行位運算前,先把浮點數轉化為整數的特性。 同理,也可以用移位運算,達到同樣目的 let a =5/4<

」博客園頁面美化(差不多是劃水

http 沒有 博客 -- erl text 頁面 ash spa 何為頁面美化?永遠沒有止境的亂搞也。 ——hzz 教材: 博客園美化

C的

如果 %s def 完全 逆序 函數 遞歸實現 -s r+ 直接上代碼: (1).交換兩參數的值 #include <stdio.h>int main(){    int a = 10,b = 5;    a^=b^=a^=b;  

CF1063A Oh Those Palindromes

傳送門(當然上洛咕能搜到) 求指定字串最多回文子串個數 Ssy太強了... 學到一個新東西 就是如果一個字元有x個 那麼它能產生的最多的迴文串個數為C(x,2) 可以理解為選擇兩個字母作為邊界 然後發現 如果所有一樣的字母全都拼在一起 那麼總個數就是C(x,2) 所以答案就是一樣的放一起就OK

java的--意外行為與特性(譯文)

Java是一種非常成熟的程式語言 - 事實上,它已經走過21年了,如果它是一個人,它可以在美國隨便混!隨著年齡的增長,智慧也在增長,而至少有時候,有些東西會變得很怪異。在本文中,我將介Java語言的一些奇技淫巧的行為和特徵。 在這裡,沒有特別的順序去介紹一系列Java的奇技淫巧,僅供娛樂,或者你向朋友們推介

Noip前的大抱佛腳----

STL函式 set set查詢前驅後繼 multiset<int>::iterator iter; S.insert(x); iter=S.find(x);//返回迭代器 iter--;//前驅 int ans=*iter; S.erase(find(x)); return ans; 或者

那些

1.交換兩個變數的值。 分析:常用的做法是新增第三個變數來作為中介完成,這裡分享一個不太常用的做法: 變數為字串時: $a = "hello"; $b = "php"; list($a,$b) = array($b,$a); 或者: $a = $a.$b; $b = strlen(

Puppet的一些

puppet這個工具真的很神奇,先不說商業版有哪些黑科技,單是開源版本就有很多可能讓你摸不著頭腦的地方,下面來列舉一下puppet是怎麼查詢puppet server的 其實很簡單,puppet agent只要知道puppet是什麼就可以了,你可以將“puppet”寫在

Vue.js 你不知道的

自己先想一分鐘。       關於上面的面試題的具體解釋,請移步這裡,本文不在累述。正文開始,下面列舉的一些奇技淫巧有的或許你用過,有的或許你沒用過。不管有的沒的,希望你看完之後有所收穫吧。文筆和知識有限,不對的地方,請留言斧正! 給 prop

C++ 進階筆記:一些庫函式……還有一些

一、奇技淫巧 1.取帶小數的餘數 (1)“整除”取餘法 #include<iostream> using namespace std; void main() { float a = 362.75; int b = 360; float aMod= a - ((i

Python之將你的女神照片變成字元畫!女朋友就答應嘿嘿

這次不寫爬蟲,來看看如何利用Python強大的影象處理庫將女神照片轉換成字元畫。下面有請重量級女神如花登場:       那清秀的面龐,水靈的雙眸,俏皮的雙馬尾,粉撲撲的髮卡,性感的鬍鬚還有略帶羞意的摳鼻動作,滿足了童年的我對美的無線遐想。就連背後

【深入淺出jQuery】原始碼淺析2--

原文:http://www.cnblogs.com/coco1s/p/5303041.html 最近一直在研讀 jQuery 原始碼,初看原始碼一頭霧水毫無頭緒,真正靜下心來細看寫的真是精妙,讓你感嘆程式碼之美。 其結構明晰,高內聚、低耦合,兼具優秀的效能與便利的擴充套件性,在瀏覽器的相容性