"测试表仅适用于本地机器的请求."

Spe*_*ort 59 .net security web-services

我在.Net中创建了一个Web服务,因此服务文件的地址有一个很好的自动生成的解释,说明它是如何工作的.当我从它托管的机器上运行页面时,甚至还有一个表单,我可以使用该表单向服务提交测试值.但是在远程计算机上,它隐藏表单并提供如上所示的消息.

这有什么意义吗?我已经看到其他网站称之为"更安全",但任何人都可以轻松创建自己的表单,如果你问我,这只会令人讨厌.

p.c*_*ell 159

您可以通过修改web.config包含这些节点来解决此问题:

<configuration>
    <system.web>
     <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这将允许您通过浏览器访问.asmx Web服务.然后,您可以直接在浏览器中调用Web服务,传递参数并查看结果.

  • +1因为我的应用程序处于安全的环境中而且对于QA而言这是完全需要的.谢谢. (9认同)
  • +1它解决了我的问题..非常有帮助:) (8认同)
  • 这种方法有什么安全问题?任何人都可以访问它,或者我可以在允许公开服务之前启用身份验证吗? (2认同)

Mik*_*tin 14

仅供参考我正在使用.NET 4.0并遇到同样的问题.

不过我用过......

<add name="HttpSoap12"/>
<add name="HttpSoap"/>
<add name="HttpGet"/>
<add name="HttpPost"/>
Run Code Online (Sandbox Code Playgroud)

在那些相同的领域,它的工作.但只是HttpGet,HttpPost它没有.


Guy*_*uck 5

如果您要发布元数据并且它是公共/不安全的 Web 服务,那么您是对的,任何人都可以很容易地生成一个简单的客户端来攻击您的 Web 服务。在这种情况下,仅在本地计算机上生成 Web 客户端似乎确实很麻烦。

然而,如果您的服务是私有且安全的,那么这将是一个巨大的安全漏洞,让任何知道服务器名称和服务的人都可以使用经过身份验证的客户端来访问您的数据并造成各种损害。

我认为仅在服务器本身上为 ASMX Web 服务生成 UI 的策略是尝试提供一些不错的工具,同时消除意外的安全漏洞。无论如何,WCF 已经废除了这一点,只有在发布元数据的情况下才可以生成客户端,并且它们需要实现正确的安全性才能访问服务。

  • 下面的答案(获得超过 120 票的答案)告诉您如何让它发挥作用 - 祝你好运! (4认同)