程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> asp中cookie欺騙/注入原理與防范

asp中cookie欺騙/注入原理與防范

編輯:關於ASP編程

       ASP獲取參數主要有下面兩種:

      Request.QueryString (GET) 或 Request.Form (POST)

      我們有時為了簡化代碼,會寫成 ID=Request("ID"),正是因為這樣寫法出現了問題……

      原來WEB服務是這樣讀取數據的:

      先取GET中的數據,沒有再取POST中的數據,還會去取Cookies中的數據!這個我也才發現。

      通常的防注入系統,他會檢測GET和POST中的數據,如果有特殊字符就禁止數據的提交,而上面簡略寫法,就不會被check

      到。

      舉例說明,參數提交及獲取原理:

      /1.asp?id=123

      如果只輸:/1.asp 就不能看到正常的數據,因為沒有參數!

      想知道有沒有Cookies問題(也就是有沒有Request("XXX")格式問題)

      先用IE輸入:/1.asp加載網頁,顯示不正常(沒有輸參數的原因),之後在IE輸入框再輸入

      javascript:alert(document.cookie="id="+escape("123"));

      說明:

      document.cookie="id="+escape("123") 就是把 123 保存到Cookies 的 ID 中。

      alert(xxx) 就是彈對話框。

      按回車後,會看到彈出一個對話框 內容是: id=123,之後,刷新網頁,如果正常顯示,表示是用Request("ID") 這樣的

      格式收集數據,就可以試Cookies注入了。

      在地址欄中輸入: javascript:alert(document.cookie="id="+escape("123 and 3=3"));

      刷新頁面,如果顯示正常,可以再試下一步(如果不正常,就有可能也有過濾了)

      javascript:alert(document.cookie="id="+escape("123 and 3=4"));刷新一下頁面如果不正常顯示,這就表示可以注入

      了。

      如果代碼是用Request.QueryString或Request.Form收集數據的話,是沒有Cookies注入問題的,因為服務程序是直截從

      GET或POST中讀取數據的,Cookies是否有數據代碼不會去獲取的。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved