Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menulis Kod MySQL yang Selamat dan Boleh Dipercayai dalam PHP?

Bagaimanakah Saya Boleh Menulis Kod MySQL yang Selamat dan Boleh Dipercayai dalam PHP?

Susan Sarandon
Susan Sarandonasal
2025-01-03 11:30:39506semak imbas

How Can I Write Secure and Reliable MySQL Code in PHP?

Mengelakkan Perangkap dalam Kod MySQL: Panduan Komprehensif

Walaupun sambungan MySQL menawarkan fungsi untuk interaksi pangkalan data, penggunaannya boleh dipenuhi dengan perkara biasa perangkap. Panduan komprehensif ini bertujuan untuk menyediakan rujukan untuk membuat kod yang selamat dan boleh dipercayai menggunakan sambungan MySQL.

Prinsip Teras

  • Elakkan Suntikan SQL: Keluarkan data yang diserahkan pengguna dengan betul menggunakan mysql_real_escape_string().
  • Lindungi Terhadap XSS: Escape data sebelum mengeluarkannya untuk mengelakkan pelaksanaan skrip berniat jahat.
  • Kendalikan Ralat Dengan Anggun: Gunakan trigger_error( ) atau kaedah pilihan untuk melaporkan ralat dan memberikan maklumat yang berguna sambil menyekat ralat terperinci mesej dalam mod pengeluaran.
  • Utamakan Kesederhanaan: Fokus pada menulis kod minimum yang menangani keperluan teras, mengelakkan kerumitan yang tidak perlu.

Kod Contoh

Pertimbangkan contoh kod ini yang mengemas kini rekod dalam pangkalan data MySQL, menangani isu yang dinyatakan di atas:

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

// Connect to the database
$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);
}

// Use UTF-8 character set
mysql_set_charset('utf8');

// Fetch user-submitted data
$id = mysql_real_escape_string($_POST['id']);
$name = mysql_real_escape_string($_POST['name']);

// Prepare and execute the update query
$query = 'UPDATE tablename SET name = "' . $name . '" WHERE id = "' . $id . '"';
$result = mysql_query($query);

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

Pertimbangan Tambahan

  • Pertimbangkan untuk menggunakan pernyataan yang disediakan (cth., mysqli_prepare()) untuk perlindungan yang lebih kukuh daripada suntikan SQL.
  • Sahkan input pengguna sebelum menerimanya, menguatkuasakan jenis dan julat data kekangan.
  • Kekal dimaklumkan tentang kelemahan keselamatan dan gunakan tampung dengan kerap.

Dengan mematuhi garis panduan ini dan memanfaatkan contoh yang diberikan, anda boleh mengurangkan risiko yang berkaitan dengan penggunaan sambungan MySQL dengan berkesan , memastikan interaksi pangkalan data yang mantap dan selamat dalam kod PHP anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis Kod MySQL yang Selamat dan Boleh Dipercayai dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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