众所周知,不建议使用GET
方法登录(或发送敏感信息)。我想使用XMLHTTPRequest创建登录功能。以下是我的步骤:
我的问题是:
如何使用POST
(安全地)将登录凭据传输到PHP页面?如果我使用open
方法,如下所示GET
,那么我认为它不安全。我可以将GET
替换为POST
吗?如果是,那么如何转移凭证?
xmlhttp.open("GET","verifyCredentials.php",true);
答案 0 :(得分:2)
要使用POST方法发布数据,请将open
中的方法设置为POST
,将 Content-Type 请求标头字段设置为application/x-www-form-urlencoded
,对您进行编码相应的数据,并将其作为参数值传递给send
:
xmlhttp.open("POST", "verifyCredentials.php", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(data);
您可以使用encodeURIComponent
功能对数据进行编码:
function formUrlEncoded(params) {
var data = "";
for (var name in params) {
if (!params.hasOwnProperty(name)) continue;
if (data.length) data += "&";
data += (encodeURIComponent(name) + "=" + encodeURIComponent(param)).replace(/%20/g, "+");
}
return data;
}
var data = formUrlEncoded({"foo":"bar", "baz":"quux"});
请注意,通过这种方式,数据仍然不受保护而不会被窃听。
答案 1 :(得分:1)
POST
和GET
的唯一区别在于POST
在http-body中而不是在URL(标题)中发送数据,因此这两种方法都不是“安全”的用于传输登录凭据。
如上所述,您应该使用https。
答案 2 :(得分:0)
在密码字段中发送密码的md5。然后,在服务器上,如果需要,可以进一步对其进行模糊处理。
答案 3 :(得分:0)
如果要对不安全的通道进行身份验证(不使用HTTPS),可以使用基于HMAC的登录协议。 HMAC可用于user authentication。
我在Javascript(客户端)和Python(服务器端)中提供了此实现。您可以使用它作为示例开始,或找到另一个实现。可能在某处有PHP实现,但您可能需要根据需要对其进行修改。