【问题标题】:confused about webservice AJAX calls security in ASP.NET对 ASP.NET 中的 Web 服务 AJAX 调用安全性感到困惑
【发布时间】:2010-03-03 00:17:12
【问题描述】:

对不起,如果我听起来有点愚蠢,但这件事让我很困惑,我一直在网上疯狂地搜索,没有最终答案,所以我希望有人能对这件事有更多的了解。

现在我想创建一个门户网站,而我的客户要求一切都应该是 AJAX 的,所以我一直在使用 ASP.NET AJAX 4 和客户端网站模板和 Web 服务,当然,JASON 结果的性能很好,但我的网络服务代码将是公开的,因为任何人都可以使用任何可用于 JAVA 脚本的内容,因此我必须阅读以避免这种情况:

  • 使用 SSL,但这是一个门户网站,前端不应使用 SSL
  • 身份验证,这可以吗,但对于后端而不是前端,因为不需要登录。

在阅读了我提到的很多内容后,我在使用带有 AJAX 的 Web 服务时遇到了以下陷阱,并希望有一个解决方案或至少一种方法来带来更高的安全性

DOS: 我已经阅读了一些文章,建议您应该使用 IP 检测来限制并阻止此请求一段时间,但这里有一些我担心的事情

  • 会影响搜索引擎爬虫吗?
  • 黑客能否通过使用代理或其他手段绕过此问题?

会话劫持: 这太可怕了,我仍然不知道当您使用 ASP.NET 会员时会发生这种情况,我认为这是一个非常可靠的会员系统! 黑客是否能够通过这种方法窃取某人的通行证?

隐藏或加密代码的方法: 我想我在这里自欺欺人,因为我已经提到如果它对 java 脚本是公开的,那么它对任何人都是公开的,但是我的客户不希望人们看到代码编写逻辑和功能。

隐藏网络服务: 就像如果您使用提琴手,您可以在 RAW 数据中再次看到例如 www.mysite.com/toparticles/getTopArticles(10) 的路径,这让我的客户感到害怕,我试图在 webconfig 中禁用 WSDL 和文档,但这只会阻止直接访问文件,仅此而已,或者我错了!有没有办法隐藏网络服务的路径?

所以我最关心的是防止破坏我的任何网络服务并尽可能隐藏我的代码。

所以我是偏执狂,因为在前端我主要是拉数据,但我可以再次让用户选择将他的小部件首选项保存在 DB 等中......而且它不会通过SSL 因此上述安全威胁是有效的。

我希望有人也可以分享他在这件事上的经验, 提前致谢。

【问题讨论】:

    标签: asp.net web-services asp.net-ajax


    【解决方案1】:

    任何在网络上公开的功能都会,嗯……在网络上公开。即使您使用带有回发的纯 ASP.NET,嗅探器也可以看到流量并模仿回发,Ajax 只是将其发挥到了极致。 Web 服务(在大多数情况下)与任何其他 get/post 系统(或非 RESTful)一样。

    您可以使用一些方法来保护您的网络服务免受未经授权的访问,但实际上这些方法与您为保护任何其他网站(asp.net、传统网络)所做的完全相同等)。

    网络上有很多关于如何保护您的网站的文章,这些文章同样适用于 AJAX、Web 服务等。

    如果您真的担心自己的 Web 服务会被公开,您可以使用自己的自定义反向代理将服务隐藏在客户网络中,只将代理暴露给外界。然后,您可以保护服务,以便它们只能通过代理访问,并在您认为相关的代理上提供任何适当的安全性。通过这种方式,所有流量都来自您指定的服务器,并且受到限制(在合理程度上)不被窥探。总的来说,虽然我认为这可能是过度杀戮,特别是对于门户网站。

    与您的客户讨论的一件事是将网络服务用作集成商的可销售产品的追加销售价值。换句话说,将安全性设计到 Web 服务中并仅将门户用作如何将它们组合在一起的示例。一个明显的例子是 SharePoint,它实际上是 Web 服务和流程的集合,而该网站实际上只是为了方便,SharePoint 的强大之处在于服务的互操作性。

    有关您的安全问题的更具体答案,这里有很多关于 SO 以及网络的帖子,涵盖了您的每个具体问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      相关资源
      最近更新 更多