demoshop

demo, trying to be the best_

WebService 的限制呼叫?

  • 2009-01-25
  • 16813
  • 0

最近有在聊到WebService 的安全性問題,記得demo第一次撰寫WebService 的時候也是很納悶,我開了一個WebService 那不是大家都可以用嗎?因為我並不想開放給每一個人查詢,只是應用於AJAX Toolkits所需才用WebService 的所以一直怕怕的不過時間久了也忘了,是最近公司有同事再討論我才又想起來,所以測試了一下。

我第一個測試的就是直接在visual studio上直接執行之前寫的WebService 果然是可以正常運作


然後我就直接打網址連到該WebService測試卻發生了下面的限制


demo就覺得起怪啦,網路上的WebService不是都可以直接呼叫嗎?為啥我寫的超陽春WebService卻會顯示這問題,於是我就建立一個新的web site然後新增一個WebService丟到網路上直接打DomainName去連,一樣發生這個限制

阿,難道說我之前的疑慮都是假的?去微軟技術支援看到了這篇【觀看】大意是說為了安全性在.NET framework 1.1的時候就將HTTP GET 及 HTTP POST 預設為停用,所以你使用HostName的叫用是無法呼叫的,除非你加上下方code來開啟

<configuration>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>
</configuration> 

看樣子你會不會以為哇,那就是說微軟早就有考慮到了安全性的問題? 以上所說的測試表單就是第一張圖的那個表格,那是為了在本機測試方便使用的,所以線上以後就預設關掉,但是!!webServic還是一樣可以被呼叫,所以如果你真的要限制請自己寫code或是利用防火牆來限制。

 

webService中文名稱為網路服務,顧名思義應該就是開放的,如果你寫了一個webService然後限制本機使用好像是有違背初衷....

回應討論