【问题标题】:Securing web method on a public web app在公共 Web 应用程序上保护 Web 方法
【发布时间】:2013-05-22 13:53:51
【问题描述】:

我有一个公共 Web 应用程序,它调用 ASMX 文件中的 ASP.NET Web 方法,该文件位于 IIS 的同一站点文件夹中。但是,为了防止机器人直接 ping 服务,我们希望保护 API,以便只有我们的 HTML 5 客户端页面可以访问它。您对我应该如何实施这种事情有什么建议吗?不要太多,只是一个简单的机制,不需要一周的测试。不必是 100% 完整的证明方法,因为它是公共数据,API 只是将数据抽出,而不是插入任何东西。只是为了限制对 API 进行 DDOS 攻击的可能性。

【问题讨论】:

  • 您好!一个问题,必须登录客户端才能调用您的 api 方法?

标签: asp.net ajax api security mobile


【解决方案1】:

我过去解决这个问题的方法是使用自定义标题。

基本上,如果您的网页使用某种形式的 AJAX 调用来回调您的服务层,那么您可以使用类似的东西:

xhr.setRequestHeader('custom-header', 'value');

其中“xhr”是您在 Javascript 中构建的 XML Http 请求

当然,您也可以采用更简单的方法,即在调用查询字符串中添加一个参数,例如:

在您的 ajax 调用中,请求:

http://my.services/service.asmx?somesecretkey=foobar

而不仅仅是

http://my.services/service.asmx

然后你可以直接使用请求的查询字符串收集服务器端来查看它是否存在,如果不存在则拒绝连接。

您甚至可以首先在传递给页面的数据中提供一些种子值,然后使用该种子值创建一个唯一值(服务器也可以计算该值),该值返回到您的向服务器请求。

这样做会提供更高级别的安全性,因为这些值是半随机的,机器人不容易猜到。

还要记住,如果您控制调用页面,并且您通过 ajax 执行此操作,您也可以将此键放入您的帖子变量集合中,这样它就不必在 get 请求中可见。

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多