標籤:轉換 提交 dmi 自動 協議 scripting 拼接 str ken
web測試安全性常見問題
一、 登入帳號明文傳輸
1、 問題一:登入帳號密碼或者修改密碼明文傳輸
現象:目前物流對內的java系統基本上都是明文傳輸使用者名稱和密碼的
使用Firefox內建工具-開發人員-網路,或者httpwatch工具很容易擷取到資訊
開啟工具後進行被測系統正常登入軟體可自動擷取資訊
建議:
登入使用加密傳輸,一般的登入都採用https方式加密協議
2、 問題二:在後台日誌中明文列印出了登入的帳號和密碼
現象:
建議:在日誌中比較敏感的資訊比如密碼都採用*轉換顯示
二、 SQL注入
1、 問題一:部分查詢輸入存在SQL注入風險
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入欄位或頁面請求的查詢字串,欺騙伺服器執行惡意的SQL命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態SQL命令,或作為預存程序的輸入參數,這類表單特別容易受到SQL注入式攻擊。
現象一:
原登入頁面的sql:
SELECT COUNT(*) FROM Login WHERE UserName=‘admin‘ AND Password=‘123456‘
現在登入時輸入:’admin’--
SELECT COUNT(*) FROM Login WHERE UserName=‘admin‘-- Password=‘123‘
因為UserName值中輸入了“--”注釋符,後面語句被省略而登入成功。(常常的手法:前面加上‘; ‘ (分號,用於結束前一條語句),後邊加上‘--‘ (用於注釋後邊的語句))
現象二:在查詢語句中輸入:’ or ‘1=1 看是否會查詢出所有的記錄
建議:開發不要直接寫靜態sql語句進行查詢,需要使用動態拼接SQL,對於web測試需要對查詢部位進行SQL注入測試。
註:參數化查詢原理:在使用參數化查詢的情況下,資料庫伺服器不會將參數的內容視為SQL指令的一部份來處理,而是在資料庫完成 SQL 指令的編譯後,才套用參數運行,因此就算參數中含有具有損的指令,也不會被資料庫所運行。
三、 XSS跨網站攻擊
1、 問題一:部分系統存在提交表單時輸入html代碼和JS代碼可在伺服器執行的情況
跨站指令碼攻擊(Cross Site Scripting)惡意攻擊者往Web頁面裡插入惡意Script代碼,當使用者瀏覽該頁之時,嵌入其中Web裡面的Script代碼會被執行,從而達到惡意攻擊使用者的特殊目的,如:
<input>
<script>alert(‘xss‘)</script>
現象:文字框中輸入<input>或<script>alert(‘xss‘)</script>
提交後<input>和<script>alert(‘xss‘)</script>作為代碼執行了出現了輸入框,而不是作為字串儲存
建議:
原則:不相信客戶輸入的資料
注意: 攻擊代碼不一定在<script></script>中,還有其他方式
1)只允許使用者輸入我們期望的資料。 例如: 年齡的textbox中,只允許使用者輸入數字。 而數字之外的字元都過濾掉。
2)對資料進行Html Encode 處理
3)過濾或移除或轉義特殊的Html標籤, 例如: <script>, <iframe> , < for <, > for >, " for
四、 跨站偽造
1、 問題一:構造POST請求進行請求可提交到資料庫中
是一種挾制使用者在當前已登入的Web應用程式上執行非本意的操作的攻擊方法,也是可以從第三方網站提交的
現象:如下腳步使用者擷取到請求地址後,可以自己構造請求訊息請求參數和值,通過瀏覽器執行後也可以提交到資料庫那說明就是存在跨站偽造
建議:
Token驗證
在每個HTTP請求裡附加一部分資訊是一個防禦CSRF攻擊的很好的方法,因為這樣可以判斷請求是否已經授權。這個“驗證token”應該不能輕易的被未登入的使用者猜測出來。如果請求裡面沒有這個驗證token或者token不能匹配的話,伺服器應該拒絕這個請求。
五、 目前普遍現象Java層未做校正或未做全部校正
一般來說JS的校正都是一種輔助,實際校正都要放在伺服器,如果不做JAVA校正就可能會存在
1) 使用WebSarab等代理工具繞過頁面校正,直接篡改資料後往資料庫中插入資料;
2) html層的校正不能防止使用者偽造請求 ,如上面的token校正就是其中一個例子;
3) 按ctrl+f5強制重新整理提交,出現重複提交
4) js需要瀏覽器下載,如果瀏覽器下載JS失敗,按鈕未灰化使用者可以反覆點擊,可出現重複提交,那還得靠伺服器端的重複提交來保證
六、 借用WebSarab工具來繞過用戶端的校正,驗證是否進行了服務校正
七、 借用AppScan工具來自動掃描安全性問題
web測試安全性常見問題