我如何保护将重要数据发布到数据库的公共ASMX页面

问题描述 投票:4回答:3

我有一个正在开发中的站点,该站点带有多个Web服务(ASMX),这些站点将重要数据发布到我的数据库中。当我在浏览器中导航到ASMX文件时,可以使用参数填写表单并将其发布到DB。如果有人找到我的WS的URL,他们可能会严重更改我的数据库。我想防止人们能够公开发布到我的WS。到目前为止,我已经想到了可能会有所帮助的两件事,但我想知道是否还有其他方法:

  • 检查WS方法的HTTP引用人是否是WS所在的域
  • 向所有重要的WS方法添加一个名为Key的附加参数,并将其作为加密的“密码”。然后在WS端加密我存储的密码,并比较密钥是否匹配。

如果可以使用其他最佳实践或技术来保护我的WS,请分享!

c# asp.net web-services security
3个回答
1
投票

最简单的方法就是禁用该测试页面。您可以通过将以下内容添加到Web服务的web.config中来做到这一点:

<webServices>
<protocols >
<remove name="HttpGet"/>
<remove name="HttpPost"/>
<remove name="HttpPostLocalhost"/>
</protocols> 

此外,这是保护Web服务安全的其他方法的decent article,包括在soap标头中添加身份验证。


6
投票

其中一些可能对您有帮助:

还请注意,只能从本地计算机访问测试网页(显示示例tetbox),如果可以从其他计算机查看,则可能存在配置问题。


1
投票

如果引荐来源网址位于同一域中,那么一种简单的方法是在引荐页面中设置cookie,然后检查ASMX中cookie的存在(以及您要实现的其他检查)。请注意,域必须相同,否则此技术将无效。

© www.soinside.com 2019 - 2024. All rights reserved.