線上服務(wù)咨詢
Article/文章
記錄成長點滴 分享您我感悟
您當(dāng)前位置>首頁 > 知識 > 網(wǎng)站建設(shè)
JSP,ASP和PHP安全編程
發(fā)表時間:2019-07-30 15:41:06
文章來源:沈陽軟件開發(fā)
標(biāo)簽:網(wǎng)站建設(shè) 小程序開發(fā) 小程序制作 微信小程序開發(fā) 公眾號開發(fā) 微信公眾號開發(fā) 網(wǎng)頁設(shè)計 網(wǎng)站優(yōu)化 網(wǎng)站排名 網(wǎng)站設(shè)計 微信小程序設(shè)計 小程序定制 微信小程序定制
瀏覽次數(shù):0
Java Server Page(JSP)作為構(gòu)建動態(tài)Web頁面的技術(shù)不斷發(fā)展。 JSP,ASP和PHP的工作方式不同。通常,JSP頁面在執(zhí)行時被編譯,而不是解釋。對JSP文件的第一次調(diào)用實際上是一個編譯成servlet的過程。當(dāng)瀏覽器從服務(wù)器請求此JSP文件時,服務(wù)器將檢查自上次編譯以來JSP文件是否已更改。如果沒有變化,Servlet直接執(zhí)行而無需重新編譯,因此效率明顯提高。
今天,我將從腳本的角度與您一起研究JSP的安全性。源代碼公開類等安全風(fēng)險超出了本文的范圍。撰寫本文的主要目的是提醒剛接觸JSP編程的朋友。從一開始,他們就應(yīng)該培養(yǎng)安全編程的意識,不要犯錯誤,避免可以避免的損失。另外,我也是初學(xué)者。如果您有任何錯誤或其他意見,請發(fā)布消息。
一、認證不嚴(yán)——低級失誤
如果要查看和修改用戶的信息,則應(yīng)使用modifyuser_manager.jsp文件。管理員提交http://www.somesite.com/yyforum/modifyuser_manager.jsp?modifyid=51將查看和修改ID為51的用戶數(shù)據(jù)(管理員的默認用戶ID為51)。但是,這樣一個重要的文件缺乏認證,普通用戶(包括游客)也可以直接或一目了然地提交上述請求(密碼也以明文形式存儲和顯示)。 Modifyuser_manage.jsp也是門戶網(wǎng)站打開,直到惡意用戶完成更新數(shù)據(jù)的操作,并且當(dāng)重定向到user_manager.jsp時,他將看到顯示錯誤的錯誤頁面。顯然,僅鎖一扇門是不夠的。編程時,必須麻煩地將身份驗證添加到身份驗證的每個位置。
二、守好JavaBean的入口
JSP組件技術(shù)的核心是一個名為bean的Java組件。在程序中,邏輯控制和數(shù)據(jù)庫操作可以放在javabeans組件中,然后在JSP文件中調(diào)用,這可以提高程序的清晰度和程序的可重用性。與傳統(tǒng)的ASP或PHP頁面相比,JSP頁面非常緊湊,因為許多動態(tài)頁面處理可以封裝到JavaBeans中。
要更改JavaBean屬性,請使用“
以下代碼是電子購物系統(tǒng)的虛構(gòu)源代碼的一部分。此文件用于在用戶的購物框中顯示信息,checkout.jsp用于結(jié)帳。
Youhaveaddedtheitem 你注意到property='*'了嗎?這表示用戶在可見JSP頁面中輸入的值或直接通過查詢字符串提交的所有變量將存儲在匹配的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)他們點擊“chekout”結(jié)賬時,費用是免費的。這與PHP中的全局變量引起的安全問題完全相同。這表明:“property='*'”必須謹(jǐn)慎使用! 三、長盛不衰的跨站腳本 跨站點腳本攻擊涉及將惡意JavaScript,VBScript,ActiveX,HTML或Flash腳本插入到遠程網(wǎng)頁的HTML代碼中,竊取瀏覽頁面的用戶的隱私以及更改用戶的設(shè)置。銷毀用戶的數(shù)據(jù)。在大多數(shù)情況下,跨站點腳本攻擊不會影響服務(wù)器和Web應(yīng)用程序的運行,但會對客戶端安全構(gòu)成嚴(yán)重威脅。 四、時刻牢記SQL注入 一般的編程書籍不注重讓他們從初學(xué)者開始就養(yǎng)成安全編程的習(xí)慣。著名的《JSP編程思想與實踐》是向初學(xué)者演示用數(shù)據(jù)庫編寫登錄系統(tǒng)(數(shù)據(jù)庫是MySQL) 五、String對象帶來的隱患 Java平臺確實使安全編程更容易。 Java中沒有指針,這意味著Java程序不再尋址地址空間中的任何內(nèi)存位置,例如C.當(dāng)JSP文件編譯成.class文件時,會檢查安全問題。例如,拒絕嘗試訪問超出數(shù)組大小的數(shù)組元素,這很大程度上避免了緩沖區(qū)溢出攻擊。但是,String對象會給我們帶來一些安全隱患。如果密碼存儲在Java String對象中,則密碼將保留在內(nèi)存中,直到它被垃圾回收或進程終止。即使垃圾收集完成,它仍將存在于空閑內(nèi)存堆中,直到它被重用。密碼字符串駐留在內(nèi)存中的時間越長,竊聽的風(fēng)險就越大。更糟糕的是,如果實際內(nèi)存減少,操作系統(tǒng)會將密碼字符串頁面調(diào)度到磁盤的交換空間,因此容易受到磁盤塊竊聽攻擊。為了最小化(但不是消除)這種折衷的可能性,您應(yīng)該將密碼存儲在char數(shù)組中并在使用后將其歸零(String是不可變的且不能歸零)。 網(wǎng)站建設(shè),小程序開發(fā),小程序制作,微信小程序開發(fā),公眾號開發(fā),微信公眾號開發(fā),網(wǎng)頁設(shè)計,網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計,微信小程序設(shè)計,小程序定制,微信小程序定制