自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Servlet和JSP的安全問(wèn)題

開(kāi)發(fā) 后端
本文介紹編寫(xiě)Servlet和JSP是容易的,但通常我們會(huì)面臨很多安全問(wèn)題,包括設(shè)置XML文件和運(yùn)行實(shí)例代碼。

編寫(xiě)Servlet和JSP是容易的,但通常我們會(huì)面臨很多安全問(wèn)題。當(dāng)然,我們會(huì)在程序中加入大量的安全代碼來(lái)解決這個(gè)問(wèn)題,但加入這樣的安全硬編碼將使程序變得不靈活,而且不易維護(hù)。因此,在本文中將給出一種無(wú)需修改代碼即可達(dá)到安全目的方法,并提供了一個(gè)實(shí)例進(jìn)行說(shuō)明。

在本文中的例子將通過(guò)一個(gè)用戶名和密碼以及傳輸層的SSL來(lái)保護(hù)應(yīng)用程序的war文件。用戶名和密碼以明文在網(wǎng)絡(luò)中傳輸。這一切并不需要編輯應(yīng)用程序中的Java代碼和JSP頁(yè)。而為了使Servlet和JSP頁(yè)變得安全,我們要做的只是配置web.xml文件而已。

一、設(shè)置XML文件

配置web.xml文件的***步是定義一個(gè)安全約束,也就是一個(gè)標(biāo)簽。這個(gè)標(biāo)簽將保護(hù)響應(yīng)的URL,以使特定的用戶才能訪問(wèn)它。注意我們必須要使用標(biāo)簽定義一個(gè)或多個(gè)HTTP方法。如果你想讓安全約束應(yīng)用到所有的HTTP方法,那么只要簡(jiǎn)單的忽略標(biāo)簽即可。

做完上面的設(shè)置后,下一步需要設(shè)置SSL。我們可以使用標(biāo)簽以及這個(gè)標(biāo)簽的一個(gè)子標(biāo)簽來(lái)設(shè)置。卻將的值設(shè)置成CONFIDENTIAL。

***一步我們需要設(shè)置驗(yàn)證方法。這需要設(shè)置標(biāo)簽以及子標(biāo)簽。在這里我們將設(shè)為BASIC。下面是web.xml文件的部分內(nèi)容:

  1. <security-constraint> 
  2. <web-resource-collection> 
  3. <web-resource-name>ServletApplication  
  4. web-resource-name> 
  5. <url-pattern>/*url-pattern> 
  6. web-resource-collection> 
  7. <auth-constraint> 
  8. <role-name>ttrolerole-name> 
  9. auth-constraint> 
  10. <user-data-constraint> 
  11. <transport-guarantee>CONFIDENTIAL  
  12. transport-guarantee> 
  13. user-data-constraint> 
  14. security-constraint> 
  15. <login-config> 
  16. <auth-method>BASICauth-method> 
  17. <realm-name>defaultrealm-name> 
  18. login-config> 
  19. <security-role> 
  20. <role-name>ttrolerole-name> 
  21. security-role> 

在上述的例子中,只有用戶"ttrole"才能訪問(wèn)Servlet和JSP頁(yè)。

在JavaEE環(huán)境中將使用這些用戶驗(yàn)證,但在許多操作系統(tǒng)環(huán)境中,用戶和組關(guān)聯(lián)。因此,security-role-mapping在用戶頭組之間提供了一座橋梁。在JavaEE5應(yīng)用服務(wù)器中,我們可以在sun-application.xml文件中按如下的方式字義security-role-mapping標(biāo)簽:

  1. <sun-application> 
  2. <security-role-mapping> 
  3. <role-name>myrolerole-name> 
  4. <principal-name>myuserprincipal-name> 
  5. security-role-mapping> 
  6. <security-role-mapping> 
  7. <role-name>ttrolerole-name> 
  8. <group-name>ttgroupgroup-name> 
  9. security-role-mapping> 
  10. <security-role-mapping> 
  11. <role-name>arolerole-name> 
  12. <principal-name>ttuserprincipal-name> 
  13. security-role-mapping> 
  14. sun-application> 

二、運(yùn)行實(shí)例代碼

在這一節(jié)我們來(lái)講一下如何運(yùn)行上面的程序。在這里我們使用的集成開(kāi)發(fā)環(huán)境是NetBeansIDE5.5以及NetBeans企業(yè)開(kāi)發(fā)包。在安裝完NetBeans后,我們需要進(jìn)行以下幾步來(lái)運(yùn)行這個(gè)程序。

1.首先我們需要下載這個(gè)程序,下載連接為:例子代碼。然后將其解壓。

2.啟動(dòng)NetBeans。

3.打開(kāi)webann工程(剛才zip文件中的NetBeans工程),如果出現(xiàn)一個(gè)"Resolvemissingserverproblem"提示信息,說(shuō)明應(yīng)用服務(wù)器還沒(méi)有被加到NetBeans的服務(wù)器列表中。我們可以選擇Tools>ServerManager,然后將相應(yīng)的服務(wù)器加到列表中。

4.啟動(dòng)Sun內(nèi)嵌在NetBeans中的JavaSystemApplicationServer。我們還可以通過(guò)在命令中輸入如下的命令來(lái)啟動(dòng)服務(wù)器:
/bin/asadminstart-domaindomain1
上面的是應(yīng)用服務(wù)器的安裝目錄。

5.建立一個(gè)用戶。我們可以通過(guò)管理控制臺(tái)來(lái)完成的(默認(rèn)是http://localhost:4848),可按以下步驟操作:
(1)從左側(cè)的管理樹(shù)中選擇Configuration>Security>Realms>file。
(2)單擊"ManageUsers",然后單擊"New"。
(3)輸入以入信息。
UserId:ttuser
GroupList:ttgroup
NewPassword:ttpassword
ConfirmNewPassword:ttpassword
(4)單擊"OK",保存設(shè)置。

在建立***個(gè)用戶后,使用同樣的方式建立第二個(gè)用戶ttusers2,輸入信息如下:

UserId:ttuser2
GroupList:ttgroup
NewPassword:ttpassword
ConfirmNewPassword:ttpassword

6.按著以下步驟編譯NetBeans工程:
(1)右擊工程窗口的webann節(jié)點(diǎn)。
(2)選擇"CleanandBuildProject"。

在這個(gè)步驟中將建立ear文件,并將它們放到webann/dist目錄中。

7.按著以下步驟發(fā)布ear文件:
(1)右擊工程中的webann節(jié)點(diǎn)。
(2)選擇"DeployProject"。

除了上述的發(fā)布方法,我們還可以按以下的方式通過(guò)管理界面發(fā)布:
(1)在左側(cè)的控制樹(shù)中選擇Applications>EnterpriseApplications。
(2)單擊"Deploy"。
(3)單擊"Browser"按鈕找到ear文件
(4)單擊"OK"。

我們還可以通過(guò)如下的命令行發(fā)布ear文件:
asadmindeploywebann.ear

8.下面我們啟動(dòng)瀏覽器,在地址欄中輸入https://:是主機(jī)名,如果是本機(jī),就是"localhost",是HTTPS的端口,如8181。

可能由于瀏覽器的不同,所看到的驗(yàn)證信息不同,但一般會(huì)出現(xiàn)一個(gè)"unknownauthority",這是因?yàn)檫@個(gè)例子使用了self-sign驗(yàn)證。然后瀏覽器將會(huì)出現(xiàn)一個(gè)選項(xiàng),提示您是否繼續(xù)瀏覽應(yīng)用程序。

如果我們選擇繼續(xù)瀏覽應(yīng)用程序,系統(tǒng)將會(huì)提示我們輸入用戶名和密碼。如果我們使用ttuser登錄,將會(huì)看到類(lèi)似如下的響應(yīng)信息:
Hello,ttuser
EjbMessage:Hello,World,SatJun3012:04:46PDT2007
DataSourcelogintimeout:0

如果我們使用ttuser2登錄,將會(huì)看到類(lèi)似如下的響應(yīng)信息:
Hello,ttuser2
DataSourcelogintimeout:0

之所以它們的響應(yīng)信息不同是因?yàn)樗鼈兯巧煌脩魌tuser擁有"ttrole"和"arole"。而ttuser2只有"ttrole",而沒(méi)有"arole"。在這個(gè)應(yīng)用程序中,只有擁有角色"arole"的用戶可以調(diào)用SlessLocal.hello(Stringmessage)方法,這個(gè)方法返回一個(gè)"Hello,World"信息。

當(dāng)我們運(yùn)行完這個(gè)程序后,可以按著如下的步驟卸載ear文件:
1.通過(guò)管理界面面卸載ear文件。
(1)在左側(cè)的功能樹(shù)中選擇Applications>EnterpriseApplications
(2)選擇"webann",然后單擊"Undeploy"。

2.通過(guò)管理界面面刪除用戶。
(1)選擇Configuration>Security>Realmn>file
(2)單擊"ManageUsers"。
(3)選擇ttuser和ttuser2。
(4)單擊"Delete"。

【編輯推薦】

  1. Servlet引擎的安裝
  2. 配置Servlet開(kāi)發(fā)環(huán)境
  3. 標(biāo)簽庫(kù)中JSP Servlet調(diào)用
  4. 學(xué)習(xí)Java Servlet時(shí)遇到的小問(wèn)題
  5. Servlet在session中共享鏈接
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-07-03 14:02:51

2009-07-01 17:34:03

Servlet和JSP

2009-07-06 09:49:26

Servlet JSP

2009-07-06 15:34:56

JSP和Servlet

2009-07-08 09:22:03

Servlet和JSP

2012-11-20 10:47:16

2009-07-07 13:42:57

Servlet JSP

2009-07-01 15:25:16

Servlet和JSP

2009-07-09 10:49:56

Servlet和JSP

2009-08-10 09:19:28

Servlet JSP

2012-06-29 13:31:56

ServletJSPJava

2009-07-07 14:04:55

JSP入門(mén)

2021-12-29 15:55:34

安全數(shù)據(jù)信息安全

2019-04-04 11:55:59

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2009-08-20 17:35:47

Servlet和JSP

2009-06-25 14:26:07

JSPJavaBeanServlet

2009-07-01 14:09:24

Servlet和BeaJSP

2009-07-02 09:13:25

什么是JSPServlet

2009-07-07 17:10:57

JSP和Servlet
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)