2013-12-12 14 views
0

公司擁有C#編寫的ASP.Net一個基於SOAP的WebService的4它是一個很好的做法,在響應返回原來的請求返回

最初的開發者留下了一段時間了,不幸的是把它放在一個極其凌亂州。保持它是絕對的噩夢,所以我正在進行重構。

一路上我注意到,他已經編碼的響應,包括用於訪問該服務的原始請求,包括用戶名和密碼(這是第2個參數的所有Web方法存在此API中)

由於我正在考慮重新構建基礎結構,我想詢問是否有人知道返回原始請求的做法是否正常?

對我來說,這似乎是一個等待發生的安全問題? 其他人是否發回原始請求減去安全信息?

注:據我所知,這是傳統技術,但可惜我不是在一個位置,從地面重新寫了整個事情了:-(

感謝, 加里


例(SOAP XML略去了):

REQUEST: 
POST our-web-service/Products.asmx/Details 
username=TEST_USER&password=TEST_PASSWORD&productId=12345 

RESPONSE: 
<Response IsValid="True"> 
    <Product id="12345"> 
    <Name>Test Product 1</Name> 
    <Category>General</Category> 
    .... 
    </Product> 
    </Product> 

    <OriginalRequest> 
    <Username>TEST_USERNAME</Username> 
    <Password>TEST_PASSSWORD</Password> 
    <ProductId>12345</ProductId> 
    </OriginalRequest> 

</Response> 
+0

恕我直言,這是沒用的,也是危險的 – giammin

+0

我只能在調試代碼中看到它的用途,只是爲了確保請求被解釋爲它的意思。對於生產代碼,它不應該真的需要在那裏。 (雖然如果它包含在回覆中是一種安全風險,那麼它首先在請求中也是如此,因爲在這一點上,可以肯定你沒有使用SSL:P你只是告訴客戶端它已經知道了......) – cHao

+0

@cHao謝謝你,我只是想要一些外部意見。僅供參考,生產API只能在https上運行 –

回答

0

我們不知道你的API的funcionality的。 因此,您的應用程序可能需要原始請求數據在無狀態環境中執行某些過程。我的意思是,發件人或請求者不希望保留請求消息,直到它得到處理並返回到您的API中。

但是暴露這樣的用戶名和密碼是不太可能的。

即使你的產品在https上運行,它並不意味着它不能被篡改。 如果您在客戶端和服務器端都使用(交換)SSL證書,那就沒問題。 服務器端的https中還有一個選項「沒有客戶端身份驗證」。在這種類型的傳輸中,客戶端使用自簽名證書來發送和接收http請求和響應。這可能會被篡改。

所以請確保您正在交換SSL證書。如果你的客戶真的關心安全。

並且沒有必要發送密碼astleast。有一次,你可以發送用戶名,但發送這樣的密碼將是你的應用程序安全性的錯誤。

相關問題