以安全的方式将密码从 Javascript 传递到 PHP

Passing password from Javascript to PHP in a secured way

我正在尝试使用 MVC 开发网站。 我有我的 HTML 表单(视图),一个在按下 "submit" 时调用的 js 控制器,然后我需要将数据(包括密码)传递到 php 文件(模型),其中密码将被散列、加盐并保存在数据库中。

我不确定我这样做的方式是否正确。是否可以以安全的方式将值从我的 js 文件传递​​到 php 文件?

通过它的唯一安全方式是使用安全线路。这意味着托管表单的页面必须在 HTTPS 上提供服务。您要提交的页面也应该是 HTTPS。


从客户端散列密码没有意义

           (1) Browser | (2) Network  | (3) Server
                       |              |
password -(md5)-> hash | -(network)-> | server

攻击者不会知道原始密码,但这并不重要。服务器想要的只是哈希。哈希本质上已成为密码。如果没有 SSL,攻击者可以简单地嗅探 (2) 中的哈希值,然后将来自 (2) 的请求直接重播到服务器。服务器甚至不知道它是伪造的。

您可以通过创建和自签名您自己的 SSL 证书来启用 HTTPS(即,您不必为证书向证书颁发机构付费,完全免费的选项)。当您访问该站点时,您的浏览器会警告您该站点不安全,因为证书不会由受信任的机构签署,但连接仍会被加密。

这里是关于 generating/self 签署您自己的 SSL 证书的相关 question/answer: How to create a self-signed certificate with openssl?

由于ajax post 请求在技术上与post 表单提交相同,因此它们处于同一逻辑级别。没有什么可以保护您免于在浏览器中破坏您的加密,所以,基本上,这样做是没有意义的(您不加密您的普通表单数据,是吗?)。

首先,您需要了解您要避免的危险是什么。很可能是 network traffic interception. You're still using HTTP so all methods are the same. You need to use traffic encryption via SSL.


注意:HTTPS 无法保护您免于直接从用户 PC 窃取数据(例如间谍软件)。

请阅读更多关于 HTTP 漏洞的信息以获得更多线索。看来您缺少一些关于这一切如何运作的理论基础知识。