成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP、ASP和PHP安全編程

開發(fā) 后端
本文介紹JSP、ASP和PHP安全編程,以及介紹守好JavaBean的入口,String對象帶來的隱患和線程安全初探等

Java Server Page(JSP)作為建立動態(tài)網(wǎng)頁的技術(shù)正在不斷升溫。JSP、ASP和PHP工作機(jī)制不太一樣。一般說來,JSP頁面在執(zhí)行時是編譯式,而不是解釋式的。首次調(diào)用JSP文件其實是執(zhí)行一個編譯為Servlet的過程。當(dāng)瀏覽器向服務(wù)器請求這一個JSP文件的時候,服務(wù)器將檢查自上次編譯后JSP文件是否有改變,如果沒有改變,就直接執(zhí)行Servlet,而不用再重新編譯,這樣,效率便得到了明顯提高。

今天我將和大家一起從腳本編程的角度看JSP的安全,那些諸如源碼暴露類的安全隱患就不在這篇文章討論范圍之內(nèi)了。寫這篇文章的主要目的是給初學(xué)JSP編程的朋友們提個醒,從一開始就要培養(yǎng)安全編程的意識,不要犯不該犯的錯誤,避免可以避免的損失。另外,我也是初學(xué)者,如有錯誤或其它意見請發(fā)帖賜教。

一、認(rèn)證不嚴(yán)——低級失誤

如果要查看、修改某用戶的信息,就要用modifyuser_manager.jsp這個文件。管理員提交
http://www.somesite.com/yyforum/modifyuser_manager.jsp?modifyid=51就是查看、修改ID為51的用戶的資料(管理員默認(rèn)的用戶ID為51)。但是,如此重要的文件竟缺乏認(rèn)證,普通用戶(包括游客)也直接提交上述請求也可以對其一覽無余(密碼也是明文存儲、顯示的)。modifyuser_manage.jsp同樣是門戶大開,直到惡意用戶把數(shù)據(jù)更新的操作執(zhí)行完畢,重定向到user_manager.jsp的時候,他才會看見那個姍姍來遲的顯示錯誤的頁面。顯然,只鎖一扇門是遠(yuǎn)遠(yuǎn)不夠的,編程的時候一定要不厭其煩地為每一個該加身份認(rèn)證的地方加上身份認(rèn)證。

二、守好JavaBean的入口

JSP組件技術(shù)的核心是被稱為bean的java組件。在程序中可把邏輯控制、數(shù)據(jù)庫操作放在javabeans組件中,然后在JSP文件中調(diào)用它,這樣可增加程序的清晰度及程序的可重用性。和傳統(tǒng)的ASP或PHP頁面相比,JSP頁面是非常簡潔的,因為許多動態(tài)頁面處理過程可以封裝到JavaBean中。

要改變JavaBean屬性,要用到“<jsp:setProperty>”標(biāo)記。

下面的代碼是假想的某電子購物系統(tǒng)的源碼的一部分,這個文件是用來顯示用戶的購物框中的信息的,而checkout.jsp是用來結(jié)帳的。

  1. <jsp:useBean id="myBasket" class="BasketBean">  
  2. <jsp:setProperty name="myBasket" property="*"/>  
  3. <jsp:useBean>  
  4. <html>  
  5. <head><title>Your Basket</title></head>  
  6. <body>  
  7. <p>  
  8. You have added the item  
  9. <jsp::getProperty name="myBasket" property="newItem"/>  
  10. to your basket.  
  11. <br/>  
  12. Your total is $  
  13. <jsp::getProperty name="myBasket" property="balance"/>  
  14. Proceed to <a href="checkout.jsp">checkout</a>  

注意到property="*"了嗎?這表明用戶在可見的JSP頁面中輸入的,或是直接通過Query String提交的全部變量的值,將存儲到匹配的bean屬性中。

一般,用戶是這樣提交請求的:http://www.somesite.com/ addToBasket.jsp?newItem=ITEM0105342  但是不守規(guī)矩的用戶呢?他們可能會提交:http://www.somesite.com /addToBasket.jsp?newItem=ITEM0105342&balance=0  這樣,balance=0的信息就被在存儲到了JavaBean中了。當(dāng)他們這時點(diǎn)擊“chekout”結(jié)賬的時候,費(fèi)用就全免了。這與PHP中全局變量導(dǎo)致的安全問題如出一轍。由此可見:“property="*"”一定要慎用!

三、長盛不衰的跨站腳本

跨站腳本(Cross Site Scripting)攻擊是指在遠(yuǎn)程WEB頁面的HTML代碼中手插入惡意的JavaScript, VBScript, ActiveX, HTML, 或Flash等腳本,竊取瀏覽此頁面的用戶的隱私,改變用戶的設(shè)置,破壞用戶的數(shù)據(jù)。跨站腳本攻擊在多數(shù)情況下不會對服務(wù)器和WEB程序的運(yùn)行造成影響,但對客戶端的安全構(gòu)成嚴(yán)重的威脅。

四、時刻牢記SQL注入

一般的編程書籍在教初學(xué)者的時候都不注意讓他們從入門時就培養(yǎng)安全編程的習(xí)慣。著名的《JSP編程思想與實踐》就是這樣向初學(xué)者示范編寫帶數(shù)據(jù)庫的登錄系統(tǒng)的(數(shù)據(jù)庫為MySQL)

五、String對象帶來的隱患

Java平臺的確使安全編程更加方便了。Java中無指針,這意味著 Java 程序不再像C那樣能對地址空間中的任意內(nèi)存位置尋址了。在JSP文件被編譯成 .class 文件時會被檢查安全性問題,例如當(dāng)訪問超出數(shù)組大小的數(shù)組元素的嘗試將被拒絕,這在很大程度上避免了緩沖區(qū)溢出攻擊。但是,String對象卻會給我們帶來一些安全上的隱患。如果密碼是存儲在 Java String 對象中的,則直到對它進(jìn)行垃圾收集或進(jìn)程終止之前,密碼會一直駐留在內(nèi)存中。即使進(jìn)行了垃圾收集,它仍會存在于空閑內(nèi)存堆中,直到重用該內(nèi)存空間為止。密碼 String 在內(nèi)存中駐留得越久,遭到竊聽的危險性就越大。更糟的是,如果實際內(nèi)存減少,則操作系統(tǒng)會將這個密碼 String 換頁調(diào)度到磁盤的交換空間,因此容易遭受磁盤塊竊聽攻擊。為了將這種泄密的可能性降至最低(但不是消除),您應(yīng)該將密碼存儲在 char 數(shù)組中,并在使用后對其置零(String 是不可變的,無法對其置零)。

六、線程安全初探

“JAVA能做的,JSP就能做”。與ASP和PHP等腳本語言不一樣,JSP默認(rèn)是以多線程方式執(zhí)行的。以多線程方式執(zhí)行可大大降低對系統(tǒng)的資源需求,提高系統(tǒng)的并發(fā)量及響應(yīng)時間。線程在程序中是獨(dú)立的、并發(fā)的執(zhí)行路徑,每個線程有它自己的堆棧、自己的程序計數(shù)器和自己的局部變量。雖然多線程應(yīng)用程序中的大多數(shù)操作都可以并行進(jìn)行,但也有某些操作(如更新全局標(biāo)志或處理共享文件)不能并行進(jìn)行。如果沒做好線程的同步,在大并發(fā)量訪問時,不需要惡意用戶的“熱心參與”,問題也會出現(xiàn)。最簡單的解決方案就是在相關(guān)的JSP文件中加上: <%@ page isThreadSafe="false" %>指令,使它以單線程方式執(zhí)行,這時,所有客戶端的請求以串行方式執(zhí)行。這樣會嚴(yán)重降低系統(tǒng)的性能。我們可以仍讓JSP文件以多線程方式執(zhí)行,通過對函數(shù)上鎖來對線程進(jìn)行同步。一個函數(shù)加上synchronized 關(guān)鍵字就獲得了一個鎖。看下面的示例:

【編輯推薦】

  1. Java Servlets(JSP)開發(fā)環(huán)境
  2. 開發(fā)JSP HTTP服務(wù)器
  3. 選擇JSP開發(fā)工具
  4. Servlet和JSP路徑詳細(xì)介紹
  5. JSP Servlet中傳遞技術(shù)要點(diǎn)
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-07-01 09:27:22

ASP.NETJSPPHP

2009-07-03 11:27:11

JSP編程思想

2009-07-21 13:43:53

ASP和JSP比較

2012-08-07 10:02:06

JSP

2009-07-28 14:30:35

ASP.NET JSP

2009-07-02 10:13:47

ASP和JSPJSP頁面

2009-07-02 16:36:04

JSP優(yōu)點(diǎn)ASP優(yōu)點(diǎn)

2009-06-30 16:51:56

2009-07-03 13:31:07

PHP和JSPApache處理

2016-10-10 00:18:27

2009-07-21 13:30:59

JSP技術(shù)ASP.NET

2011-09-14 10:38:39

2009-03-11 11:46:11

JSPASP.NET存儲過程

2009-07-07 13:29:33

Servlet和JSP

2009-06-29 17:01:49

Servlet和JSPJSP技術(shù)

2020-12-18 09:40:30

應(yīng)用程序安全代碼

2009-07-03 14:02:51

2011-04-08 13:58:52

JavaJSP

2009-07-03 10:04:04

JSP ASPJSP ASP區(qū)別

2020-08-19 15:30:04

PHP網(wǎng)絡(luò)安全代碼
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 超碰免费在线 | av不卡一区 | 在线观看av网站 | 天天躁日日躁xxxxaaaa | 伊色综合久久之综合久久 | 国产乱码精品一品二品 | 国产精品99久久久久久宅男 | 国产精品视频中文字幕 | www网站在线观看 | 亚洲一区二区三区久久久 | 久久激情视频 | 一级做a爰片久久毛片免费看 | 狠狠色综合网站久久久久久久 | 欧美黄色一区 | 国产视频一区在线 | 97免费在线观看视频 | 狠狠躁夜夜躁人人爽天天高潮 | 国产91丝袜在线播放 | 亚洲精品播放 | 成人精品一区二区三区 | 成人精品鲁一区一区二区 | 欧美日韩一 | 国产精品永久免费视频 | 精品视频免费 | 精品久久伊人 | 蜜月aⅴ国产精品 | 成人免费观看视频 | 999热精品视频 | 成人黄色三级毛片 | 免费在线a视频 | 91精品国产一区二区 | 久久精品1 | 久久综合一区二区 | 99久久精品免费 | 欧美在线视频网 | 亚洲成人久久久 | 国产精品毛片 | 亚洲精品在线看 | av看看 | 国产aⅴ爽av久久久久久久 | 国产片淫级awww |