Web頁面即咱們在瀏覽器中所看到的網頁,在Web應用程序中,其頁面每每須要進行動態切換和數據交互,頁面間的數據常規傳遞方法有多種,本文主要介紹Web頁面處理程序中常見的URL地址參數傳遞方法,包括概述其實現原理、特色和常見問題,最後介紹檢測該方式常見應用問題的測試思路和方法。
web
Web是internet上一個很是重要的資源信息網,產生於20世紀90年代初,它遵循超文本傳輸協議,以超文本或超媒介的形式傳送各類各樣的信息,爲用戶提供了一個具備友好的圖形化界面——Web頁面,以便用戶閱讀internet上的信息文檔。Web頁面實際上是一個單一的文件,其特色主要表如今:
1)Web是圖形化的和易於導航的。Web能夠在一頁上同時顯示色彩豐富的圖形和文本的性能,同時Web很是易於導航,它能夠在各頁各站點之間進行瀏覽了。
2)Web與平臺無關。不管你的系統平臺是什麼,你均可以經過Internet訪問WWW。
3)Web是分佈式的。大量的圖形、音頻和視頻信息能夠放在不一樣的站點上。只須要在瀏覽器中指明這個站點就能夠了。
4)Web 是動態的。Web站點的信息包含站點自己的信息,信息的提供者能夠常常對站上的信息進行更新,Web動態的特性還表如今Web是交互的,經過超鏈接能夠鏈接任意能夠鏈接的頁面,從服務器方得到動態的信息。 算法
Web頁面是動態和交互的,Web頁面之間的數據交換每每存在一些參數的傳遞,不論是經過哪一種語言平臺編寫Web頁面處理程序,其參數傳遞的方式方法相似,且多種多樣,常見方式主要包括經過URL地址、Application/Session、Cache、Cookie以及基於服務器文件或數據庫等。
URL地址傳遞參數方式在咱們Web頁面程序處理中很是常見,其形式是在頁面地址後面附帶參數的方式瀏覽頁面,如:「http://test.net/Expert/PostNew.asp?room=301」,其中「room=301」即咱們傳遞的參數名稱和值。URL地址方法能夠很方便的在頁面之間切換並傳遞參數,無需額外的處理,基於正常狀況下不會產生性能損失,以Asp.net程序中URL參數傳遞處理爲例,其簡單處理過程以下:
發送頁面處理程序a.aspx:
Send_url = 「b.aspx?name=」 + paraValue;
Response.Redirect(s_url);
接收頁面處理程序b.aspx:
Receive_value=Request.QueryString["name"];
URL地址傳遞參數方式特色主要表如今如下幾個方面:
1)URL地址法簡潔易用,可同時傳遞多個字符型參數;
2)URL地址法能夠很方便的在頁面之間切換並傳遞參數,無需額外的處理,基於正常狀況比較不會性能損失;
3)URL傳遞參數長度受限,最大爲2K;
4)URL只能傳遞字符型參數;
5)信息泄露:URL地址在客戶端可見,致使會泄露信息,可能被黑客用來攻擊系統。 數據庫
1)因URL傳遞參數長度受限,最大爲2K,在應用中可能會出現超出範圍時的處理錯誤;
2)URL只能傳遞字符型參數,在應用中,常常會傳遞一些中文名的參數或URL地址,由於發送頁面和接收頁面的字符編碼方式不同而致使參數解析處理錯誤,參數包含中文時出現亂碼或者參數接收錯誤;
3)Web程序中對字符編碼的方法多種多樣,可是有些方法對一些特殊字符,如:! @ # $& * ( ) = : / ; ? + '中的某些不能進行編碼,所以對參數中包含某些特殊字符時不能正確處理,當參數中包含這些特殊字符時,軟件接收處理出現異常;
4)URL能夠傳遞必定長度大小字符型參數,在應用中常常經過URL接收的參數須要進一步進行邏輯處理,好比類型轉換或者數字計算操做等,處理過程當中開發人員可能會對參數在界面輸入時限制處理不充分,並且開發人員在後續邏輯處理中過度信任傳遞過來的參數而未進行充分邏輯判斷,致使在後續的邏輯處理中出現邊界處理或者類型轉換的錯誤,致使程序出現異常甚至崩潰;
5)URL地址中的參數常常與數據庫SQL語句中的參數關聯,若是開發人員對SQL語句參數化處理不完善,經過URL地址傳遞參數也容易引發SQL注入問題,參數中包含特殊字符、類型或者長度不符合要求時致使程序出錯,甚至能夠經過這個入口破壞或者獲取數據庫信息;
6)URL顯示傳遞參數,容易產生信息泄露問題,一些關鍵信息URL地址在客戶端可見,這些信息可能被黑客用來攻擊系統。 瀏覽器
針對採用URL地址傳遞參數的Web程序,爲發現及解決其應用問題,咱們經過如下幾個方面進行測試:
1)分析軟件需求,是否須要處理超過2K大小的參數,如須要則經過Web界面控件或者URL輸入超出2K大小參數進行測試,經過這種方式能夠發現軟件是否能夠正常處理超出2K大小參數的需求問題;如無需求也能夠經過此測試檢測軟件在參數大小超過2K時是否進行了相應的限制或者錯誤處理;
2)經過Web界面控件或者URL輸入中文字符參數進行測試,檢測軟件在接收頁面處理是否正常,是否出現亂碼或者異常錯誤;
3)經過Web界面控件或者URL輸入各類特殊字符,例如:! @ # $& * ( ) = : / ; ? + '等,檢測軟件接收處理是否正常,是否能夠顯示處理必須的特殊字符;
4)經過Web界面控件或者URL輸入參數邊界值,同時包括輸入各類類型參數,檢測軟件運行是否正常;
5)經過Web界面控件或者URL輸入包含跟數據庫SQL語句相關的一些特殊字符參數如’= 和一些關鍵字符串等,檢測軟件是否存在SQL注入問題,同時也能夠採用一些安全測試工具,對URL輸入參數進行SQL注入的滲透測試;
6)檢測URL參數中是否包含關鍵信息,並可經過獲取信息經過安全測試工具進行惡意破壞或者攻擊測試。 安全
針對URL地址傳遞參數應用問題,在應用中有以下建議:
1)在安全性要求較高的系統中不推薦使用這種方法,只適合在一些安全性要求不高,頁面邏輯比較的簡單的場合;
2)對參數長度超出2K的傳遞建議不要採起此方式;
3)對地址信息進行編碼,且保證發送頁面和接收頁面編碼和解碼方式對應一致;
4)對從URL地址中接收的參數信息進行邊界和類型校驗;
5)爲防止信息泄露,對URL傳遞的參數進行加密處理,同時須要考慮加密和解密過程的性能損失;
6)爲防止信息泄露,也可對URL進行重寫,通過必定算法重組的URL信息,使在IE中不顯示真正的參數或者網頁連接信息。 服務器
Web頁面參數傳遞方式多種多樣,各有優缺點,用戶在開發和測試過程當中,針對各自特色選擇相應方式進行設計和相關處理。在Web頁面處理程序測試過程當中,測試人員應先充分了解Web頁面參數傳遞採用的方式,若是採用URL地址進行參數傳遞,則根據其特色和應用中常見的問題,採用正確的方法進行測試,以解決各類應用問題,提升Web應用程序的質量。分佈式