WebService 的限制呼叫?
- 2009-01-25
- 18010
- 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然後限制本機使用好像是有違背初衷....
回應討論