如果我们使用javascript的http请求功能:
var request = new XMLHttpRequest();
到https地址,这将使用任何类型的加密还是MITM能够查看我们发送的所有数据?
示例:
function createAuthToken(baseRestURL, callback) {
var APIPath = "account/api/session";
var CORSPath = "https://cors-anywhere.herokuapp.com/";
var completeRestURL = CORSPath + baseRestURL + APIPath;
console.log("REST API URL: " + completeRestURL);
var method = "POST";
var postData = "{\"tokenId\": \"" + document.getElementById('api_key').value + "\",\"secret\": \"" + document.getElementById('secret').value + "\",\"loginMode\": 1,\"applicationType\": 35}";
var async = true;
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && (request.status == 200 || request.status == 201)) {
console.log("ONLOAD");
var status = request.status; // HTTP response status, e.g., 200 for "200 OK"
console.log(status);
var response = JSON.parse(request.responseText);
console.log(response.session_token);
return callback(response.session_token);
}
}
request.open(method, completRestURL, async);
request.setRequestHeader("Content-Type", "application/json");
request.setRequestHeader("Accept", "application/json");
request.send(postData);
跟进问题:如果没有,是否可以在我们的客户端javascript中包含加密的安全方法?我的想法是在将请求发送到服务器之前,使用网站的公钥对请求进行加密,但是我找不到其他尝试进行客户端加密的人。
一个粗略的例子:
var CryptoJS = require("crypto-js");
var stackOverflowKey = "30 82 01 0a 02 82 01..."
var postData = "{\"tokenId\": \"" + document.getElementById('api_key').value + "\",\"secret\": \"" + document.getElementById('secret').value + "\",\"loginMode\": 1,\"applicationType\": 35}";
var encryptedPostData = cryptoJS.hmacSHA256(postData, stackOverflowKey)
//let's skip the callback and request headers as they are the same as above
var request = new XMLHttpRequest();
request.open();
request.send(encryptedPostData);
我没有学习计算机科学,也没有在线找到任何相关信息。普遍接受的方法是什么?
答案 0 :(得分:2)
XMLHttpRequest中的HTTP和XML部分一样,只是一个遗留的命名方案。由于所使用的请求不仅可以包含http协议网址,而且还可以接收更多的XML响应正文。
例如,最初的W3C工作草案通过说出XMLHttpRequest对象:
https://www.w3.org/TR/2006/WD-XMLHttpRequest-20060927/#introduction
该对象的名称是XMLHttpRequest以与Web兼容 否则就没有多大意义了。它支持运输 除XML之外的其他数据格式,某些实现支持 除HTTP之外的其他协议(该功能未在 但是该API也支持发送数据。
请注意“某些实现” ,因为这是2006年的工作草案,所以并不是每个人都使用相同的实现。
当前XMLHttpRequest的whatwg规范对此名称进行了说明:
https://xhr.spec.whatwg.org/#introduction
名称XMLHttpRequest是历史名称,与其名称无关 功能。
只要使用的浏览器根据规范实现XMLHttpRequest,请求/响应就将被浏览器正常对待,即为https加密。