PHP에서 보안은 원격 데이터베이스에 연결할 때 매우 중요한 고려 사항입니다. 특히 데이터베이스 서버 및 애플리케이션이 다른 네트워크 환경에 배포되는 경우 SSL 암호화 된 연결을 사용하면 전송 중에 데이터가 도난 당하거나 변조되는 것을 효과적으로 방지 할 수 있습니다.
이 기사는 PHP의 MySQLI_Connect () 함수 (즉, Connect () 함수의 변형)를 사용하여 원격 데이터베이스에 SSL 보안 연결을 구현하는 방법을 소개하며, 예제 코드에서 모든 URL 도메인 이름은 이해 및 응용 프로그램을 쉽게 이해할 수 있도록 M66.NET 으로 대체됩니다.
SSL (Secure Sockets Layer)은 클라이언트와 서버간에 데이터 전송을 암호화하여 정보의 기밀성과 무결성을 보장하는 보안 프로토콜입니다. MySQL은 SSL 암호화를 지원하며 PHP의 MySQLI Extension은 관련 매개 변수를 통해 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 확장을 가능하게했는지 확인하십시오.