我正在尝试与我的数据库建立安全连接
我写了以下代码:
<?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 > 0) {
session_start();
$_SESSION["username"] = $username;
header("Location: forum.php");
} else {
$_SESSION['Error'] = "Invalid username or password";
}
}
$db->close();
}
我也在www.example.com上读到了一些关于SSL连接的内容php.net,但我不知道如何在这种情况下实现它。
http://php.net/manual/en/mysqli.ssl-set.php
我的代码运行在fedora 21上,它工作得很好,但接下来我想要的是使用SSL的安全连接。
3条答案
按热度按时间bnl4lu3b1#
您不需要客户端证书和私钥,并且在大多数情况下,您不希望MySQL服务器验证客户端证书。
但是,客户端必须使用CA证书验证服务器证书,以防止MITM。
rpppsulh2#
connection -必需。指定要使用的MySQL连接
key -必需。指定密钥文件cert的路径名-必需。指定证书文件ca的路径名-必需。指定证书颁发机构文件capath的路径名-必需。指定包含PEM格式密码的受信任SSL CA证书的目录的路径名-必需。指定允许用于SSL加密的密码列表
SOURCE HERE
对于mysql_真实的_connect使用
jexiocij3#
一点简单的方法方便actucaly mysqli