ホームページ > データベース > mysql チュートリアル > PHP で MySQL 拡張機能を安全に使用して SQL インジェクションを防ぐにはどうすればよいですか?

PHP で MySQL 拡張機能を安全に使用して SQL インジェクションを防ぐにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-20 02:03:08
オリジナル
907 人が閲覧しました

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

MySQL 拡張機能を使用して安全なデータベース クエリを作成する方法

MySQL 拡張機能は、PHP でのデータベース インタラクションに対する初歩的かつ機能的なアプローチを提供します。最も推奨されているオプションではありませんが、適切に使用すると、潜在的なセキュリティとユーザビリティの落とし穴を軽減できます。

安全なクエリに関する重要な考慮事項

一般的な脆弱性から保護するには、次のことが重要です。ベスト プラクティスに従う:

  • ユーザーをエスケープすることで SQL インジェクションを防止するinput.
  • LIMIT 句やテーブル名などの動的 SQL の実行を回避します。
  • デバッグおよび運用環境での使用のために堅牢なエラー レポートを実装します。
  • クロスサイト スクリプティングに対して保護します ( XSS) サニタイズによる出力。

安全な MySQL 相互作用のサンプル コード

「tablename」に対して UPDATE クエリを実行する安全な PHP スクリプトを説明します。テーブル:

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);
}
ログイン後にコピー

説明

  • ユーザー入力のエスケープ: 入力値 (ID と名前) は、mysql_real_escape_string を使用してエスケープされます。 SQL インジェクション。
  • 無効化エラー表示: エラー表示は、セキュリティ上の理由から実稼働モード (display_errors が 0 に設定) では無効になります。
  • Unicode サポート: Unicode サポートは、mysql_set_charset('utf8') を介して有効になります。国際文字。
  • エラー処理: 詳細なエラーは次のとおりです。障害が発生した場合にトリガーされ、デバッグとエラー報告に役立ちます。 trigger_error() 関数は、必要に応じてカスタマイズできます。

このコード サンプルは、MySQL 拡張機能を使用して安全な更新クエリを実行する方法を示しています。これは、独自のデータベース操作でベスト プラクティスを実装しようとしている開発者にとって参考になります。

以上がPHP で MySQL 拡張機能を安全に使用して SQL インジェクションを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート