【问题标题】:Jquery Ajax security concernsJquery Ajax 安全问题
【发布时间】:2016-12-10 03:58:05
【问题描述】:

我一直在几个项目中使用 Jquery Ajax 调用。我想知道这些对服务器的调用是否不安全?考虑如下内容,

   $.ajax({
            method: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: "/CMSWebParts/vline/Serviceupdates/ServiceUpdate.aspx/EditPlannedDisruption",
            data: '{"id":"' + id + '"}',
            success: function (res) {
            $("#hdnOverrideId_PlannedDisruption").val(res.d.PlannedDisruptionId);

                $("#edTime2_PublishPlanned").val(res.d.pubtime2);
                if (res.d.Proposed) {
                    $("#chkProposed").prop("checked", true);
                }

                if (res.d.Active) {
                    $("#chkActive").prop("checked", true);
                }

                if (res.d.LinkedOverrideId || res.d.LinkedOverrideId != "null") {
                    $("#btnlinkedOverride").hide();
                    $("#linkedOverride").hide();
                }

            }

        })

如果用户查看浏览器源代码,他可以看到包括服务器方法名和参数名在内的整个代码,这为黑客提供了机会。

这里有什么我遗漏的安全措施吗?

【问题讨论】:

  • 取决于您对安全的看法
  • 在 PHP U 中可以使用 session 或 $_COOKIE 存在条件来获取 ajax 的响应

标签: javascript jquery asp.net ajax security


【解决方案1】:

如果用户检查浏览器源代码,他可以看到整个代码 包括服务器方法名称和参数名称,它提供 黑客的机会。

所以,是的,任何攻击者都可以从外部角度了解您的应用程序是如何工作的。

这就是为什么您应该确保您的应用程序是安全的,尽管任何用户都可以使用您的应用程序服务器与浏览器的通信方式。

你需要预防:

  • 尽管知道传递了哪些 URL、方法和参数,但攻击者仍可以访问您的服务器。
  • 攻击者通过您的应用程序(例如存储的 XSS)瞄准您应用程序的其他用户。
  • 攻击者通过浏览器瞄准您应用程序的其他用户(例如反射 XSS、CSRF 和其他跨域攻击 - 请参阅 Same Origin Policy)。
  • 攻击者滥用授予他们的帐户权限。
  • 还有无数其他攻击媒介被利用。

这里有什么我遗漏的安全措施吗?

查看OWASP Top 10,了解您应该保护您的应用程序免受攻击的漏洞的起点。

【讨论】:

    【解决方案2】:

    嗯,您唯一应该担心的是加密您发送到服务器的数据以及您从服务器接收的数据。您几乎无法在浏览器上进行代码检查。

    让我解释一下。当有人访问您的网页时,他们已经拥有了您为在浏览器中工作而设计的一切。你对此无能为力。您可以尝试让绕过(缩小)变得更加令人生畏,但接受有人可以访问您的客户端代码。

    真正的问题是通过网络传输的数据。看,如果黑客在他的浏览器中检查代码,他不会得到很多有用的信息(除非你自己犯了一些明显的错误)。当然,他们可以看到请求的去向以及各个端点的参数。但是如果没有适当的身份验证和授权,一个适当保护的后端甚至不会让他们向这些端点发送请求。

    黑客也有兴趣获取其他人的详细信息。一个非常明显的例子是用户名和密码。如果您在没有适当加密的情况下通过网络发送这些数据,那才是真正的问题。

    简而言之,要保护在浏览器上运行的源代码,您无能为力。感兴趣的一方已经拥有了他们需要的任何东西,并且 JS 不适合混淆。您应该对保护通过网络传输的数据更感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多