base64_encode是一个安全选项,使用Ajax帖子向api发送详细信息

时间:2015-07-07 12:24:56

标签: php jquery ajax

有人能让我知道使用php和jquery向api发送详细信息的最佳方式,我遇到的问题是有人可以直接查看源代码并查看用户名和密码。

这就是我所拥有的。

<?php
    $username = "bob";
    $password = "Changme";
    $details = base64_encode("$username:$password");
?>

var sendData = {
    "data": "<?php echo $details; ?>"
}
$.post("https://example.com/login", sendData, function(response) {
    console.log(response);
}, 'json');

然后在api调用中做一些事情,比如。

function login_post() {

        if (!$this -> post('Username') && !$this -> post('Password') ) {
            $this -> response(array('error' => 'Error'), 404);
        }

        // Check if the user details are correct 
        $data = base64_decode($_POST['data']);

    }

安全地执行此操作的最佳方式是什么?我理解即使有了这个,也可以抓住基本编码的字符串并使用php解码它。

我应该通过某种到期时间戳发送,还是我会发送如此独特的密码,只是真的想想最好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

除非您和第三方事先交换了加密密钥,否则您无法安全地保护将该信息转发给第三方(example.com)的网络浏览器中的用户名和密码。

您有几个选择。我能想到2:

  1. 在PHP中创建一个客户端服务器端,并从第三方通过服务器(AJAX)向第三方(curl,guzzle等)请求来自第三方的数据。基本上是第三方网站的服务器端代理。
  2. 使用PHP服务器端登录第三方网站,然后向Web浏览器提供访问令牌,仅限一次使用时间限制。这需要第三方支持这一点。