【问题标题】:Why is AJAX authentication through HTTP considered to be non secure?为什么通过 HTTP 进行的 AJAX 身份验证被认为是不安全的?
【发布时间】:2010-11-15 09:45:56
【问题描述】:

让我们考虑下一个场景:假设我有一个 Web 应用程序,并且通过模式对话框窗口执行用户身份验证(比如说,当用户单击登录按钮时,发送 ajax 请求并根据回调我关闭窗口或显示错误),我使用 only HTTP 协议。为什么它被认为是不安全的做事方式?

另外,请确保考虑到模态对话框窗口,因为这是至关重要的信息。对话窗口下方可能会显示一些数据,如果模态损坏,可以访问这些数据。

问题包括:

  1. 如何通过以下方式破坏应用程序安全性 使用 ajax 调用?
  2. Ajax HTTP 安全性低于 常规形式的 HTTP?

【问题讨论】:

  • 谁认为这不安全?或者谁认为这比常规形式安全性差?
  • 这实际上是一个为什么,而不是谁的问题。如果与 HTTPS 相比,毫无疑问它是不安全的。我想知道的是为什么。
  • 你能澄清一下这个问题吗?您是在问 Ajax HTTP 是否不如 Ajax HTTPS 安全?还是您在问 Ajax HTTP 是否不如常规形式的 HTTP 安全?
  • 除非您在将其发送给客户端之前使用 SHA 或 MD5 对其进行加密,否则密码将以纯文本形式传输。 AJAX 与否。
  • @Rosdi:如果你已经获得了 md5 的密码 - 你总是可以使用相同的 md5 字符串重复相同的请求并获得身份验证 :-) (除非你使用某种额外的令牌)

标签: ajax security authentication web-applications


【解决方案1】:

谁告诉你的——他错了。通过发布的 ajax 并不比使用常规形式的发布安全性低。只是因为它是相同的东西。

根据上次编辑更新 1:

  1. 你不能
  2. 没有

参数:AJAX 请求与其他任何 http 请求相同(如 html 表单发送的请求)。 完全一样。因此,根据定义,它不能降低或提高安全性。

我不知道如何解释更多以及说什么:ajax是一个http请求。当您打开 SO 页面或发布 SO 问题表单时,与您的浏览器发出的请求相同。

我可以将您的问题改写为“为什么 A 不如 A 安全”。答案:A 并不比 A 安全,因为 A 是 A :-S

【讨论】:

  • 除了你的答案之外,你能发表一些论据吗?
  • @zerkms:你做到了,谢谢你,因为我清楚地看到了你的观点。但我没有得到的想法是下一个:虽然在发送按下登录按钮请求时以简单的形式身份验证,仅此而已,如果使用对话窗口,则会有一系列 js 调用(虽然我不是 js 专家) , 如果假设某种 js 附加到页面底部,可以简单地更改并导致 js 允许您做的任何事情。如果我能做到这一点,我可以轻松地发送两个请求 - 一个用于登录,另一个用于向某人获取凭据。什么比(如果可能的话)?
  • @den-javamaniac:也许您可以告诉我们您是如何被认为 ajax 不那么安全的?
  • @den-javamaniac:请回复您的最后一条评论。没有理由不能在页面中添加一些 js 以使用常规表单执行完全相同的操作。
【解决方案2】:

任何敏感数据都应通过 HTTPS 传输。 GET 数据在查询字符串中发送。 POST 数据在 HTTP 请求标头中发送。 Ajax 可以两者兼得。两者都不安全。您需要通道级别的加密来真正保护它。

【讨论】:

    【解决方案3】:

    HTTP 对私有数据不安全,因为数据是以明文形式传输的。这可以在客户端和服务器之间的任何地方(例如wifi)被截获。基于HTTPS的Ajax会好得多。

    【讨论】:

    • 但不是在问为什么 ajax 会降低安全性吗?
    【解决方案4】:

    我认为问题在于您使用的是 http。不管你怎么看,它都不安全。如果您使用 https,则 ajax 请求将与 html 表单一样安全。

    我的回答是使用 https,然后你就准备好了。

    【讨论】:

      【解决方案5】:

      我不是安全专家,但我认为通过 HTTPS 发送它可能更安全。只是谷歌搜索得知我可以安全地完成它:

      http://www.indicthreads.com/1524/secure-ajax-based-user-authentication/ http://msdn.microsoft.com/en-us/magazine/cc793961.aspx(专注于 ASP.NET) 等等

      【讨论】:

        【解决方案6】:

        由于浏览器对 HTTP 和 HTTPS 使用相同的网络堆栈,无论是否 AJAX,都没有区别。所有标头、cookie、身份验证等的工作方式完全相同。

        【讨论】:

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