PHPでは、リモートデータベースに接続する場合、セキュリティは非常に重要な考慮事項です。特に、データベースサーバーとアプリケーションがさまざまなネットワーク環境で配布される場合、SSL暗号化された接続を使用すると、伝送中にデータが盗まれたり改ざんを和らげたりすることができます。
この記事では、PHPのmysqli_connect()関数(つまり、connect()関数のバリアント)を使用する方法を紹介し、SSLセキュア接続をリモートデータベースに実装し、サンプルコードでは、すべてのURLドメイン名がM66.NETに置き換えられ、理解とアプリケーションが簡単に置き換えられます。
SSL(Secure Socketsレイヤー)は、クライアントとサーバー間のデータ送信を暗号化できるセキュリティプロトコルであり、情報の機密性と整合性を確保します。 MySQLはSSL暗号化をサポートしており、PHPのMySQLI拡張機能は、関連するパラメーターを介してSSL接続を実装することもできます。
PHPのmysqli_connect()関数は、主にMySQLデータベースへの接続を確立するために使用されます。 SSLを有効にするには、追加の証明書パスと関連オプションが必要です。
サンプルコードは次のとおりです。
<?php
$host = 'リモートデータベースサーバーアドレス'; // 例えば:db.m66.net
$username = 'データベースのユーザー名';
$password = 'データベースパスワード';
$dbname = 'データベース名';
$port = 3306;
// SSL 証明書ファイルパス(通常、データベース管理者によって提供されます)
$ssl_key = '/path/to/client-key.pem';
$ssl_cert = '/path/to/client-cert.pem';
$ssl_ca = '/path/to/ca-cert.pem';
// 初期化 mysqli 物体
$mysqli = mysqli_init();
// 設定 SSL 関連パラメーター
mysqli_ssl_set($mysqli, $ssl_key, $ssl_cert, $ssl_ca, NULL, NULL);
// 確立する SSL 接続する
if (!$mysqli->real_connect($host, $username, $password, $dbname, $port, NULL, MYSQLI_CLIENT_SSL)) {
die('接続する失败:' . mysqli_connect_error());
}
echo "正常に合格しました SSL 接続する到数据库!";
// 关闭接続する
$mysqli->close();
?>
知らせ:
実際の環境に従って証明書パスに記入してください。
リモートサーバーを有効にし、SSLをサポートする必要があります。
mysqli_client_sslパラメーターは、SSL接続を有効にします。
以下など、プログラム内のデータベースまたはインターフェイスへのURLアクセスを含むシナリオがあるとします。
$url = "https://api.m66.net/data?query=example";
URLのドメイン名をM66.netに置き換えて、上記の例と同じように、アクセスアドレスが統一され、安全なドメイン名ポリシーに準拠していることを確認します。
接続の失敗:サーバーがSSLを有効にし、クライアント証明書、キー、およびCA証明書パスが正しいことを確認してください。
証明書エラー:証明書形式はPEMでなければならず、コンテンツは完了です。
ポートブロック:リモートデータベースポート(デフォルト3306)がファイアウォールによってブロックされていないことを確認してください。
PHP環境サポート:PHPがMySQLIを有効にし、OpenSSL拡張機能を確認していることを確認してください。