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

时间:2010-01-19 17:17:52

标签: c# asp.net web-services security

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

最简单的方法是禁用该测试页面。您可以通过将以下内容添加到Web服务的web.config来执行此操作:

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

另外,这里有一个decent article关于保护您的Web服务的其他方法,包括在soap标头中添加身份验证。