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