相关疑难解决方法(0)

如何在SSL上使用mysqli连接

我正在尝试与我的phpdatabase建立安全连接

我写了以下代码:

<?php
// form filled?
        if (isset($_POST['submit'])) {
            $user = 'gebruiker';
            $pass = 'gebruiker';
            $db = new mysqli('localhost', $user, $pass, 'forum');
            if (mysqli_connect_errno()) {
echo 'database doesnt work';
                file_put_contents('MySQLiErrors.txt', date('[Y-m-d H:i:s]') .        mysqli_connect_error() . "\r\n", FILE_APPEND);
                exit();
            } else {
                $username = $_POST['username'];
                $userspassword = $_POST['password'];
                $salt = strrev($userspassword.substr(0,4));
                $password = hash('sha512',$userspassword.$salt);
                $statement = $db->prepare("SELECT id,username FROM user WHERE username = ? AND password = ?");
                $statement->bind_param("ss", $username, $password);
                $statement->execute();
                $result = $statement->get_result();
                $statement->close();
                $count = $result->num_rows;
                if ($count …
Run Code Online (Sandbox Code Playgroud)

php mysql ssl mysqli

5
推荐指数
2
解决办法
9986
查看次数

MYSQLI_CLIENT_SSL 和 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT 有什么区别?

这是我通常使用 SSL 连接到 MySQL 数据库的方式:

$db = mysqli_init();
mysqli_ssl_set(
    $db,
    NULL,
    NULL,
    '/etc/ssl/my-certs/ssl-ca.crt.pem',
    NULL,
    NULL
);
mysqli_real_connect(
    $db,
    'db.example.com',
    'john',
    '123456',
    NULL,
    NULL,
    NULL,
    MYSQLI_CLIENT_SSL
);
Run Code Online (Sandbox Code Playgroud)

据我了解,该标志是使用 SSL 连接到服务器MYSQLI_CLIENT_SSL所必需的。mysqli::real_connect

今天我偶然发现了 的文档mysqli::options,并注意到它接受MYSQLI_OPT_SSL_VERIFY_SERVER_CERT作为一个选项,但是,唉,它的描述是空白的。所以,我想知道:

  1. 我什么时候需要添加mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
  2. 我什么时候需要使用该MYSQLI_CLIENT_SSL标志?
  3. 我什么时候需要同时设置它们?

php mysqli php-7

5
推荐指数
1
解决办法
4351
查看次数

标签 统计

mysqli ×2

php ×2

mysql ×1

php-7 ×1

ssl ×1