XMLHttpRequest 通过 HTTPS 安全吗?

问题描述 投票:0回答:1

我正在编写一个 PHP / JS Web 应用程序,其中大量使用 XMLHttpRequest 对象(用于页面更新/AJAX 等)。我在用户管理(登录、注册等)代码中使用了这一点 - 通过 XMLHttpRequests 以纯文本形式发送密码(然后由服务器进行哈希处理并安全地存储在数据库中)。对于一个具体的(准系统)示例,它是这样的:

// Define the HTTP request parameters
var username = "my_username";
var password = "my_super_secure_password";
var addr = "/my_app/check_login";
var post = "ACTION=CREATE_USER&USERNAME=" + username + "&PASSWORD=" + password;

// Create the XMLHttpRequest object
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function ()
{
     // AJAX stuff goes here!
}
xhttp.open("POST", addr, true);
xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

// And away it goes!
xhttp.send(post);

显然,在我的本地主机设置上(仅使用 MAMP 的 HTTP,没有安全性),这会产生奇迹。然而,当我将其上传到我的主机服务器(HTTPS / SSL 等)时,我担心这是否会成为.成功并且(最重要的是) b.安全吗?

我不知道 XMLHttpRequest 对象是否会自动调整为页面正在使用的相同协议,如果不是,显然通过它发送用户密码将是一个安全块。如果比我更有能力的人能让我知道,如果这实际上不安全,是否有其他方法可以更安全地使用 AJAX,我将不胜感激。

谢谢!

javascript https xmlhttprequest
1个回答
0
投票

是的,使用

XMLHttpRequest
通过 HTTPS 发送请求与使用
fetch
通过 HTTPS 发送请求或正常表单提交一样安全。

我不知道

XMLHttpRequest
对象是否会自动调整到页面正在使用的相同协议

这取决于您传递给

open()
方法的 URL,即您的
addr
。如果它是相对 URL,那么可以。如果它是绝对 URL,您甚至可以从通过 HTTPS 加载的页面发送 HTTP 请求 - 这是一个坏主意,您可以通过内容安全策略来防止意外(甚至恶意)发生这种情况混合内容

© www.soinside.com 2019 - 2024. All rights reserved.