Audit Keselamatan Sambungan Pangkalan Data PHP: Semak kod anda untuk mencari kelemahan

WBOY
Lepaskan: 2024-06-01 15:33:13
asal
378 orang telah melayarinya

Audit keselamatan sambungan pangkalan data: Gunakan protokol keselamatan (TLS/SSL) untuk melindungi komunikasi pangkalan data dan mencegah serangan orang di tengah. Gunakan pertanyaan berparameter untuk memisahkan data daripada rentetan pertanyaan dan menghalang serangan suntikan SQL. Tapis input pengguna untuk mengalih keluar aksara berniat jahat dan arahan SQL untuk memastikan hanya input yang sah dilaksanakan. Gunakan kata laluan yang kukuh, ubahnya dengan kerap dan elakkan kata laluan lalai atau mudah diteka. Hadkan akses pangkalan data kepada mereka yang memerlukan akses sahaja untuk mengurangkan permukaan serangan.

PHP 数据库连接安全审计:检查您的代码是否存在漏洞

Audit Keselamatan Sambungan Pangkalan Data PHP: Semak kod anda untuk mengetahui kelemahan

Keselamatan sambungan pangkalan data adalah penting dalam aplikasi PHP. Sambungan yang tidak selamat boleh membawa kepada pendedahan data sensitif atau capaian yang tidak dibenarkan kepada aplikasi. Dalam artikel ini, kami akan meneroka cara untuk menyemak kelemahan keselamatan sambungan pangkalan data dalam kod PHP dan memberikan beberapa contoh praktikal.

1. Gunakan protokol selamat

Pastikan pelayan pangkalan data dan aplikasi PHP anda menggunakan protokol selamat seperti TLS/SSL. Ini akan menyulitkan komunikasi pangkalan data dan menghalang serangan orang di tengah.

$dsn = 'mysql:dbname=database;host=localhost;port=3306';
$username = 'username';
$password = 'password';

try {
    $db = new PDO($dsn, $username, $password, [
        PDO::ATTR_PERSISTENT => true,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_SSL_KEY => '/path/to/key.pem',
        PDO::MYSQL_ATTR_SSL_CERT => '/path/to/cert.pem',
        PDO::MYSQL_ATTR_SSL_CA => '/path/to/ca.pem',
    ]);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
Salin selepas log masuk

2. Pertanyaan berparameter

Menggunakan pertanyaan berparameter boleh menghalang serangan suntikan SQL. Ia menghalang arahan SQL yang berniat jahat daripada dilaksanakan dengan memisahkan rentetan pertanyaan dan data.

$stmt = $db->prepare('SELECT * FROM users WHERE username = :username');
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();
Salin selepas log masuk

3. Tapis input pengguna

Sentiasa tapis input pengguna untuk mengelakkan watak jahat atau suntikan arahan SQL. Gunakan fungsi terbina dalam seperti filter_var()htmlentities() untuk mengesahkan dan membersihkan input pengguna.

$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
Salin selepas log masuk

4 Gunakan kata laluan selamat

Sentiasa gunakan kata laluan yang kukuh dan tukarkannya dengan kerap. Elakkan daripada menggunakan kata laluan lalai atau mudah diteka, seperti "kata laluan" atau "admin."

5. Hadkan Akses Pangkalan Data

Berikan akses hanya kepada aplikasi atau pengguna yang perlu mengakses pangkalan data. Mengehadkan akses kepada pangkalan data mengurangkan permukaan serangan dan mengurangkan risiko pelanggaran data.

Kes Praktikal

Kes 1:

$db = new PDO('mysql:dbname=database;host=localhost', 'username', 'password');
Salin selepas log masuk

Kod di atas terdedah kepada serangan suntikan SQL kerana tiada penapisan atau pengesahan input pengguna.

Dibetulkan:

$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);

$db = new PDO('mysql:dbname=database;host=localhost', $username, $password);
Salin selepas log masuk

Kes 2:

$stmt = $db->query('SELECT * FROM users WHERE username="' . $_POST['username'] . '"');
Salin selepas log masuk

Kod di atas juga terdedah kepada serangan suntikan SQL kerana ia memasukkan input pengguna terus ke dalam pertanyaan SQL.

Dibetulkan oleh:

$stmt = $db->prepare('SELECT * FROM users WHERE username = :username');
$stmt->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
$stmt->execute();
Salin selepas log masuk

Atas ialah kandungan terperinci Audit Keselamatan Sambungan Pangkalan Data PHP: Semak kod anda untuk mencari kelemahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan