什么是輸入?
輸入指的是由環境產生的一種刺激,該刺激導致被測試的應用有所響應。
具體的表現形式有輸入框(新增、修改、查詢等)、上傳、導入等。
輸入可能會導致安全隱患,故需要建立整體的威脅模型,測試溢出漏洞、信息泄漏、錯誤處理、SQL 注入、身份驗證和授權錯誤。
輸入驗證標准
客戶端驗證 服務器端驗證(禁用腳本調試,禁用Cookies)。
數據驗證流程:一個好的web系統應該在IE端,server端,DB端都應該進行驗證。但有不少程序偷工減料,scrīpt驗證完了,就不管了;app server對數據長度和類型的驗證與db server的不一樣,這些都會引發問題。
編號 |
輸入(表一) |
1 |
輸入框的表現形式是否合理,主要分下拉框、單復選框、文本框、彈出選擇框。 |
2 |
UI: 輸入框的樣式,是否對齊,樣式是否美觀 |
3 |
輸入框默認值: 1、 提示信息類 2、 系統數據:應該默認的是否默認了,默認的對不對(數據權限) |
4 |
輸入框之前的標題是否正確; |
5 |
數據完整性測試,驗證輸入與輸出的是否信息一致 |
6 |
對特殊字符的處理,尤其是輸入信息徐需要發送到數據庫的。特殊字符包括:'(中英文單引號)、"(中英文雙引號)、[](中括號)、()(小括號)、{}(大括號)、;(分號)、<>(大於小於號)、@、#、%、$ …… |
7 |
空值驗證 |
8 |
空格trim處理:字符串前后空格trim,中間的空格不處理 |
9 |
輸入框本身的大小、長度; |
10 |
對空格、TAB字符的處理機制; |
11 |
半角、全角處理 |
12 |
字符本身顯示的顏色; |
13 |
密碼輸入窗口轉換成星號或其它符號;且密碼輸入框對其中的信息進行加密,防止采用破解星號的方法破解; |
14 |
按下ctrl和alt鍵對輸入框的影響; |
15 |
對於新增、修改、注冊時用的輸入框,有限制的,應該輸入時作出提示,指出不允許的或者標出允許的; |
16 |
對於有約束條件要求的輸入框應當在條件滿足時輸入框的狀態發生相應的改變,比如選了湖南就應該列出湖南下面的市,或者選了某些條件之后,一些輸入框會關閉或轉為只讀狀態; |
17 |
輸入類型:根據前面的欄位標題判斷該輸入框應該輸入哪些內容算是合理的。例如,是否允許輸入數字或字母,不允許輸入其他字符等。 |
18 |
輸入與要求不同類型的字符,如: 要求輸入數字則檢查正值,負值,零值(正零,負零),小數,字母,空值; 要求輸入字母則檢查輸入數字 |
19 |
1、輸入長度:數據庫字段有長度定義,當輸入過長時,提交數據是否會出錯。 2、對輸入框輸入超過限制的字符的處理,一般非特殊的沒有作出限制的在255byte左右; 3、如對輸入文字長度有限制,則嘗試超過限制,剛好到達限制字數時有何反應 |
20 |
輸入狀態:當處於某種狀態下,輸入框是否處於可寫或非可寫狀態。例如,系統自動給予的編號等欄位作為唯一標識,當再次處於編輯狀態下,輸入框欄位應處於不可寫狀態,如果可寫對其編輯的話,可能會造成數據重復引起沖突等。 |
21 |
是否允許復制粘貼,右鍵粘貼和ctrl+V等 |
22 |
關鍵字是valid,但是沒有匹配搜索結果的情況; |
23 |
輸入正常字符串 |
24 |
輸入特殊字符串NULL, null, 0x0d 0x0a |
25 |
關鍵字有大小寫混合的情況; |
26 |
關鍵字中是否支持通配符的情況(視功能而定); |
27 |
對於像回答數這樣需檢驗數字正確性的測試點,不僅對比其與問題最終頁的回答數,還要對回答進行添加刪除等操作后查看變化 |
28 |
原子輸入 |
29 |
等價類輸入 |
30 |
輸入的組合 |
31 |
輸入的光標處理,出錯后光標處理 |
32 |
輸入內容后,輸入框的狀態變化 |
33 |
輸入html和javascript代碼, 如【表二】所示。 |
編號 |
輸入(表二) |
1 |
輸入<html”>”gfhd</html>,看是否出錯; |
2 |
輸入<input type=”text” name=”user”/>,看是否出現文本框 |
3 |
輸入<script type=”text/javascript”>alert(“提示”)</script>看是否出現提示 |
4 |
<input type="text"/> |
4 |
<input/> |
5 |
<input/ |
6 |
<script>alert('hello');</script> |
7 |
1.jpg" onmouseover="alert('xss') |
8 |
"></a><script>alert(‘xss’);</script> |
9 |
http://xxx';alert('xss');var/ a='a |
10 |
‘”>xss&< |
11 |
a=”/” ; b=”;alert(/xss/);//” |
12 |
<img src=“輸出內容” border=“0” alt=“logo” /> |
13 |
“’” |
14 |
‘”’ |
15 |
“”” |
16 |
“ “ “ |
17 |
“”“ |
18 |
“‘ ” title=”” |
關於上傳:
1.上傳文件是否有格式限制,是否可以上傳exe文件;
2.上傳文件是否有大小限制,上傳太大的文件是否導致異常錯誤,上傳0K的文件是否會導致異常錯誤,上傳並不存在的文件是否會導致異常錯誤;
3.通過修改擴展名的方式是否可以繞過格式限制,是否可以通過壓包方式繞過格式限制;
4.是否有上傳空間的限制,是否可以超過空間所限制的大小,如將超過空間的大文件拆分上傳是否會出現異常錯誤。
5.上傳文件size大於服務器剩余空間大小,是否會出現異常錯誤。
6.關於上傳是否成功的判斷。上傳過程中,中斷。程序是否判斷上傳是否成功。
7.對於文件名中帶有中文字符,特殊字符等的文件上傳。
8.用超長路徑下的文件
9.上傳過程中刪除、移動、修改文件
10.上傳時更改文件名
11.上傳過程中中斷
12.上傳時間
13.上傳后不保存
14.上傳地址
15.上傳文件名大小寫是否區分
16.上傳過程中注銷帳號
17.上傳過程中斷網
18.上傳過程中開關防火牆
導入
除了驗證【表一】中提到的要點,導入還需要進行驗證:
1.時間驗證(時間的格式、開始和結束時間驗證、年月日無效數據驗證(注意閏年)
2.導入文件的可支持的格式,如果導入不支持的格式是否報錯
3.導入過程中取消導入
4.導入文件的size
5.導入文件的文件名大小寫
6.上傳后保存的時間(數據庫服務器時間)
7.上傳后保存到數據庫的地址(可配置的地址為佳,固定地址最次)
8.上傳過程中注銷帳號
9.上傳過程中斷網
10.上傳過程中開關防火牆
下載&導出:
- 文件導出后文件名和內容是否出現亂碼,內容格式是否對齊,內容是否正確
- 導出內容的數據權限是否正確,是否導出了超過用戶權限的內容
- 是否可選擇性/全部導出
- 是否可另存為其他格式(手動更改)
- 保存到超長路徑下的目錄
- 導出的耗時
- 目標磁盤滿載
- 導出過程中注銷帳號
- 導出過程中斷網
- 導出過程中開關防火牆
關於URL:
1.某些需登錄后或特殊用戶才能進入的頁面,是否可以通過直接輸入網址的方式進入;
2.對於帶參數的網址,惡意修改其參數,(若為數字,則輸入字母,或很大的數字,或輸入特殊字符等)后打開網址是否出錯,是否可以非法進入某些頁面;
3.搜索頁面等url中含有關鍵字的,輸入html代碼或JavaScript看是否在頁面中顯示或執行。
4.輸入善意字符。