【问题标题】:$.ajax post function security$.ajax 发布功能安全
【发布时间】:2016-04-04 11:37:45
【问题描述】:

我正在研究我的 web 应用程序的安全性。我目前使用 ajax 帖子登录我的用户到 php 文件。

$.ajax({
        type: "POST",
        url: "login_StartUserSession.php",
        data: ({usr: theUser, pwd: thePassword}),
        cache: false,
        dataType: "text",
        success:  function(data){.....}

我想知道这些数据是如何传递到服务器的。默认情况下它只是纯文本吗?这是一个可能的安全问题吗?我可以在不使用 HTTPS 的情况下加密密码吗?

【问题讨论】:

  • 我想这就是你需要的stackoverflow.com/questions/6269598/…
  • 这与使用表单的常规请求不存在安全问题,完全一样,是的,用户名和密码以纯文本形式发送
  • 我认为每个页面都是 html 作为默认值,因此您需要将 contenttype 设置为 text/plain。我不知道你是否已经这样做了,但你可能还想在做任何其他事情之前检查你的用户是否打开了 javascript

标签: javascript php jquery ajax


【解决方案1】:

我想知道这些数据是如何传递到服务器的。

默认情况下,它以application/x-www-form-urlencodedContent-Type 发布,传输的数据类似于usr=test&pwd=test

这是一个可能的安全问题吗?

仅当您将数据发送到的 URL 是 HTTP。任何敏感的东西都需要 HTTPS。

【讨论】:

  • 嗨,谢谢。你知道有没有办法不用https就可以加密密码?
  • @Janey 这样做没有安全的方法,因为攻击者可能会为您的用户提供恶意 JavaScript 代码,从而消除您的保护。 HTTPS 现在免费提供 letsencrypt.org 之类的东西 - 没有理由不将其用于用户名/密码等敏感数据。
  • 真正的问题是,您需要加密密码吗?您的网站是否存储信用卡信息、个人信息等,或者您是否在经营一家银行?如果只是常规登录,比如使用电子邮件和密码,访问类似于 Stack Overflow 等的不存储任何有价值的网站,您真的需要 SSL 和加密密码吗?我同意 SSL 是免费/便宜的,通常应该使用,但大多数网站不使用 SSL,他们也真的不需要它。
  • 实际上更重要的是从不在服务器上存储密码,并拥有适当的散列和加盐系统
  • @Janey 那你必须使用 HTTPS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2017-05-27
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
相关资源
最近更新 更多