3.2 Web2.0 應用探索(Discovery, Enumeration, and Profiling)

  • 透過協定分析(Protocol Analysis)發現 Web 2.0 應用
    WEB 2.0可能是用同一個網頁來做許多事,所有的資料或部分的應用都廣泛的使用javascript來達成。因此,在這種使用DOM來驅動的動態單一網頁無法透過傳統分析HTTP request示圖要找出在server上可能的資源

               Tools

    • Live Http Header
      可用來觀查HTTP header以及Generator
    • Firebug
      可用來觀察XHR物件
    • 執行畫面
  • Dynamic DOM Event 處理
               工具
    • chickenfoot
      按F8開啟或是檢視->側邊攔->chickenfoot
      可以直接模擬瀏覽器動作產生DOM event
      下圖為自動填入數值並點擊按鈕
  • Crawling Ajax-based pages
    • 簡介
      • 以前的 Crawling 是利用 Protocol-driven 的方式開一個 socket 連到一個網路服務,接下來送 HTTP Requests,然後把連結,腳本,Flash 等等的資料存起來。而現在這個方法不管用了,因為有不少網頁嵌了很多的 Ajax 技術的 Web services。這些 Web services 都是 JavaScript 的一部分而且嵌在 DOM 裡面。所以新的方法就必須要能分析 JavaScript 跟 Ajax 之間的連結,要能自動的觸發 DOM event 然後取出 Dynamic DOM 的資料。
    • 工具
      • Paros
        • 簡介
          • Proxy + Spider + Scanner
      • Watir
        • 簡介
          • 一個可以用來遙控瀏覽器的工具,能夠自動化的執行預先設定好的動作(需要ruby環境)。
          • 支援 IE, Firefox, Safari, Google chrome
        • 這邊用 Firefox 當作例子,把 Browser 給到 變數 firefox 後,firefox.text_field().set 去找要填入目標的 id, Google 的輸入框 id 是 q. 設定好字串後執行 firefox.button().click 點選按鈕,一樣是找 id. 若把指令寫好的話就可以執行預期動作。
      • Fiddler
        • 簡介
          • IE用的除錯proxy,可以用來觀察或監控HTTP傳輸。
      • rbNarcissus
      • Crowbar
        • 簡介
          • 必須先有 XULrunner 來執行 Crowbar,
          • c:\> %XULRUNNER_HOME%\xulrunner.exe --install-app %CROWBAR%\xulapp
            c:\> cd %CROWBAR%\xulapp
            c:\> %XULRUNNER_HOME%\xulrunner.exe application.ini

          • 把瀏覽器的 Proxy server 設定成 http://localhost:10000/
            測試網頁 http://simile.mit.edu/crowbar/test.html
            直接打開網頁後的原始碼
            利用 Crowbar 後,

  • Page profiling and link analysis
  • WSDL(Web Services Description Language)
    • 簡介
      WSDL以XML為基礎,描述WEB服務,1.1版之前WSDL的"D"意旨定義(Definition)
      WSDL 1.1並非W3C所認可,而之後的WSDL 1.2被W3C認可並改名為WSDL 2.0
    • 1.1 VS 2.0比較
      WSDL物件
      1.1 2.0 說明
      Service Service 包含一個基於網路協定並提供外部使用的系統功能的集合
      Port Endpoint 提供實際傳輸時的網路位址,提供和服務連接的目標位址,一般都是用一串簡單的http url來表示
      Binding Binding 為特定的port類型定義操作與訊息的具體協定和資料格式
      PortType Interface 定義一連串的服務操作(operations),類似傳統程式語言的class
      Operation Operation 類似傳統程式語言的method或是function call
      Message N/A 定義需要傳輸的訊息,類似傳統程式語言的參數
      Types Types 用來描述資料的類型



    • 範例(完整範例請見英文WIKI)
    WIKI範例(綁定HTTP)
    <binding name="RESTfulInterfaceHttpBinding" interface="tns:RESTfulInterface"
    type="http://www.w3.org/ns/wsdl/http">
    <operation ref="tns:Get" whttp:method="GET"/>
    <operation ref="tns:Post" whttp:method="POST"
    whttp:inputSerialization="application/x-www-form-urlencoded"/>
    <operation ref="tns:Put" whttp:method="PUT"
    whttp:inputSerialization="application/x-www-form-urlencoded"/>
    <operation ref="tns:Delete" whttp:method="DELETE"/>
    </binding>

    WIKI範例(綁定SOAP)
       <binding name="RESTfulInterfaceSoapBinding" interface="tns:RESTfulInterface"
    type="http://www.w3.org/ns/wsdl/soap"
    wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
    wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
    <operation ref="tns:Get" />
    <operation ref="tns:Post" />
    <operation ref="tns:Put" />
    <operation ref="tns:Delete" />
    </binding>

    WIKI範例(為上面的例子提供存取點)
    <service name="RESTfulService" interface="tns:RESTfulInterface">
    <endpoint name="RESTfulServiceHttpEndpoint"
    binding="tns:RESTfulInterfaceHttpBinding"
    address="http://www.example.com/rest/"/>
    <endpoint name="RESTfulServiceSoapEndpoint"
    binding="tns:RESTfulInterfaceSoapBinding"
    address="http://www.example.com/soap/"/>
    </service>
    • 安全疑慮
      對於不嚴謹的WSDL描述來說,可能會讓一些敏感的資訊洩漏出來,有心人士更可以透過這些訊息找出潛在漏洞。

參考資料(Reference)
英文
chickenfoot官方網站
http://groups.csail.mit.edu/uid/chickenfoot/quickstart.html
Watir官方網站
http://wtr.rubyforge.org/
Fiddler官方網站
http://www.fiddler2.com/fiddler2/
WSDL 規格 1.1
http://www.w3.org/TR/wsdl
WSDL 規格 2.0
http://www.w3.org/TR/wsdl20/
WSDL 教學
http://www.tutorialspoint.com/wsdl/index.htm
WSDL 教學(W3SCHOOLS)
http://www.w3schools.com/WSDL/default.asp
WSDL WIKI
http://en.wikipedia.org/wiki/Web_Services_Description_Language
Crowbar
http://simile.mit.edu/wiki/Crowbar

中文
WSDL 教學(W3SCHOOLS) 簡體中文版
http://www.w3school.com.cn/wsdl/index.asp
WEB 2.0 網站安全性
http://ithelp.ithome.com.tw/question/10000131
MicroSoft TechNet
http://www.microsoft.com/taiwan/technet/book/xml/default_2.aspx