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