我们公司有一个用C#ASP.Net 4编写的基于SOAP的WebService。
最初的开发人员不久前就离开了,不幸的是他把它留在了一个非常混乱的状态。保持它是一个绝对的噩梦,所以我正在重构。
在此过程中,我注意到他已将响应编码为包括原始请求,包括用于访问服务的用户名和密码(这是此API中存在的所有Web方法的前2个参数)
由于我正在研究重建基础设施,我想询问是否有人知道返回原始请求的做法是否正常?
对我来说,这似乎是一个等待发生的安全问题? 其他人是否发回原始请求减去安全信息?
注意:我知道这是传统技术,但不幸的是我无法从头开始重写整个事情: - (
谢谢, 加里。
示例(为简洁省略了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 :(得分:0)
我们不了解您的API功能。 因此,可能存在一种情况,您的应用程序需要原始请求数据才能在无状态环境中执行某些过程。我的意思是,发件人或请求者不希望保留请求消息,直到它被处理并返回到您的API中。
但是暴露这样的用户名和密码的可能性很小。
即使您的生产也在https上运行,但这并不意味着它不能被篡改。 如果您在客户端和服务器端使用(交换)SSL证书,那么它没问题。 在服务器端的https中还有一个选项,“没有客户端身份验证”。在这种类型的传输中,客户端使用自签名证书来发送和接收http请求和响应。这可能会被篡改。
因此请确保您正在交换SSL证书。如果您的客户担心安全问题。
并且无需至少发送密码。有一段时间,你可以发送用户名,但发送密码就像你的申请证券一样会出错。