【发布时间】:2013-12-12 17:08:44
【问题描述】:
我们公司有一个用 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>
【问题讨论】:
-
恕我直言,这是无用且危险的
-
我只会在调试代码中看到它的用途,只是为了确保请求被解释为它的意思。对于生产代码,它不应该真的需要在那里。 (虽然如果它包含在响应中是一种安全风险,那么它首先存在于请求中也是如此。因为在这一点上,可以肯定的是,你没有使用 SSL。:P 你只是告诉客户已经知道的......)
-
@cHao 谢谢你,我只是想要一些外部意见。仅供参考,生产 API 仅在 https 上运行
标签: asp.net web-services soap asmx