Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mencegah Suntikan SQL?

Bagaimana Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mencegah Suntikan SQL?

Susan Sarandon
Lepaskan: 2024-12-20 02:03:08
asal
944 orang telah melayarinya

How to Securely Use the MySQL Extension in PHP to Prevent SQL Injection?

Cara Membuat Pertanyaan Pangkalan Data Selamat dengan Sambungan MySQL

Pelanjutan MySQL menawarkan pendekatan asas namun berfungsi untuk interaksi pangkalan data dalam PHP. Walaupun bukan pilihan yang paling dianjurkan, penggunaannya yang betul boleh mengurangkan kemungkinan masalah keselamatan dan kebolehgunaan.

Pertimbangan Penting untuk Pertanyaan Selamat

Untuk melindungi daripada kelemahan biasa, adalah penting untuk mematuhi amalan terbaik:

  • Cegah Suntikan SQL dengan melarikan diri dari input pengguna.
  • Elakkan pelaksanaan SQL dinamik, seperti LIMIT klausa atau nama jadual.
  • Laksanakan pelaporan ralat yang teguh untuk nyahpepijat dan penggunaan pengeluaran.
  • Selamat daripada skrip rentas tapak (XSS) dengan membersihkan output.

Kod Contoh untuk Interaksi MySQL Selamat

Mari kita gambarkan skrip PHP selamat yang melakukan pertanyaan KEMASKINI pada 'nama jadual' jadual:

header('Content-type: text/html; charset=utf-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$config = array(
    'host' => '127.0.0.1',
    'user' => 'my_user',
    'pass' => 'my_pass',
    'db' => 'my_database'
);

$connection = @mysql_connect($config['host'], $config['user'], $config['pass']);

if (!$connection) {
    trigger_error('Unable to connect to database: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_select_db($config['db'])) {
    trigger_error('Unable to select db: ' . mysql_error(), E_USER_ERROR);
}

if (!mysql_set_charset('utf8')) {
    trigger_error('Unable to set charset for db connection: ' . mysql_error(), E_USER_ERROR);
}

$result = mysql_query('UPDATE tablename SET name = "' . mysql_real_escape_string($_POST['name']) . '" WHERE id = "' . mysql_real_escape_string($_POST['id']) . '"');

if ($result) {
    echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') . ' updated.';
} else {
    trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR);
}
Salin selepas log masuk

Penjelasan

  • Escape User Input: Nilai input (id dan nama) dilarikan menggunakan mysql_real_escape_string untuk mengelakkan Suntikan SQL.
  • Lumpuhkan Ralat Paparan: Paparan ralat dilumpuhkan semasa mod pengeluaran (display_errors ditetapkan kepada 0) untuk tujuan keselamatan.
  • Sokongan Unicode: Sokongan Unicode didayakan melalui mysql_set_charset('utf8') untuk mengendalikan watak antarabangsa.
  • Ralat Pengendalian: Ralat terperinci dicetuskan sekiranya berlaku kegagalan, membantu dalam penyahpepijatan dan pelaporan ralat. Fungsi trigger_error() boleh disesuaikan mengikut keperluan.

Sampel kod ini menunjukkan cara untuk melaksanakan pertanyaan kemas kini selamat menggunakan sambungan MySQL. Ia berfungsi sebagai rujukan untuk pembangun yang ingin melaksanakan amalan terbaik dalam interaksi pangkalan data mereka sendiri.

Atas ialah kandungan terperinci Bagaimana Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan