首頁 >後端開發 >php教程 >如何用 PHP 寫安全可靠的 MySQL 程式碼?

如何用 PHP 寫安全可靠的 MySQL 程式碼?

Susan Sarandon
Susan Sarandon原創
2025-01-03 11:30:39555瀏覽

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

避免MySQL 程式碼中的陷阱:綜合指南

雖然MySQL 擴充提供了資料庫互動的功能,但它的使用可能充滿了常見問題陷阱。本綜合指南旨在為使用 MySQL 擴充功能編寫安全可靠的程式碼提供參考。

核心原則

  • 避免 SQL 注入: 使用正確轉義使用者提交的資料mysql_real_escape_string()。
  • 防範 XSS: 在輸出資料之前轉義資料以防止惡意腳本執行。
  • 優雅地處理錯誤: 使用trigger_error( )或報告錯誤並提供有用資訊的首選方法,同時抑制生產中的詳細錯誤訊息
  • 優先考慮簡單性:專注於編寫滿足核心需求的最少程式碼,避免不必要的複雜性。

範例程式碼

考慮這個更新 MySQL資料庫中的記錄的範例程式碼,解決了上述問題問題:

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);
}

其他注意事項

  • 考慮使用準備好的語句(例如mysqli_prepare ())來針對SQL 注入提供更強的保護。
  • 在接受之前驗證使用者輸入,強制執行資料類型和範圍
  • 隨時了解安全漏洞並定期套用修補程式。

透過遵守這些準則並利用提供的範例,您可以有效降低與使用 MySQL 擴充功能相關的風險,確保 PHP 程式碼中健壯且安全的資料庫互動。

以上是如何用 PHP 寫安全可靠的 MySQL 程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn