現在の位置: ホーム> 最新記事一覧> PHP REAL_ESCAPE_STRINGとMYSQLIの基本的な使用

PHP REAL_ESCAPE_STRINGとMYSQLIの基本的な使用

gitbox 2025-05-27

Web開発にPHPを使用する場合、オペレーティングデータベースは日常業務で最も一般的なタスクの1つです。 SQLインジェクションなどのセキュリティの問題を防ぐために、ユーザーが入力したデータで適切なエスケープ処理を実行する必要があります。 MySQLデータベースを使用する場合、PHPのMySQLI拡張機能は、一般的に使用される安全な機能を提供します:文字列をエスケープするために使用されるREAL_ESCAPE_STRINGは、データベース操作のセキュリティを改善します。

1。mysqli拡張機能の紹介

MySQLI (MySQL改善)拡張機能は、MySQLデータベースと対話するためのPHPの拡張モジュールです。初期のMySQL拡張機能と比較して、 MySQLIは、前処理ステートメントのサポート、トランザクションコントロール、より完全なエラー処理メカニズムなど、より豊富な機能を提供します。

MySQLI拡張機能を使用するには、最初に次のようにデータベース接続オブジェクトを作成する必要があります。

<code> $ host = 'localhost'; $ user = 'db_user'; $ password = 'db_password'; $ database = 'test_db';

$ conn = new mysqli($ host、$ user、$ password、$ database);

if($ conn-> connect_error){
die( '接続失敗:'。$ conn-> connect_error);
}
</code>

このコードは、 MySQLIコンストラクターを使用してMySQLサーバーへの接続を確立し、接続が成功したかどうかを判断します。

2。real_escape_string関数の使用

REAL_ESCAPE_STRINGは、SQLステートメントで使用される文字列をエスケープするためにMySQLIオブジェクトによって提供される方法です。これにより、特殊文字(引用符、バックスラッシュなど)がSQL構文を破壊するのを防ぐことができ、それによりSQL注入攻撃を効果的に防止できます。

その典型的な使用法は次のとおりです。

<Code> $ user_input = "o'Reilly"; $ safe_input = $ conn-> real_escape_string($ user_input); $ sql = "select * fromユーザー= '$ safe_input'"; $ result = $ conn-> query($ sql); </code>

この例では、ユーザーが入力したO'Reillyが逃げられない場合、SQLステートメントにエラーが発生したり、セキュリティの問題を引き起こしたりします。 REAL_ESCAPE_STRINGメソッドは、O \ 'Reillyに単一の引用符を自動的に免れ、法的で安全なSQLステートメントを構築します。

3。注意すべきこと

  1. データベース接続後に使用する必要があります
    real_escape_stringは現在の接続の文字セットに依存するため、接続が成功した後に呼び出される必要があります。

  2. 前処理ステートメントの代替品に等しくない<br> REAL_ESCAPE_STRINGは何らかのセキュリティを提供できますが、前処理ステートメントを完全に置き換えることはできません。前処理ステートメントは、SQL注射を防ぐ最も安全な方法です。

  3. 文字セットは一貫性がある必要があります<br> PHPとデータベースで使用される文字セットが一貫していることを確認します(UTF8MB4など)。

4. HTMLフォームを組み合わせる実用的な例

HTMLフォームを使用してユーザー入力を受信し、 REAL_ESCAPE_STRINGを介して処理する例を次に示します。

<code>&lt; form method = "post" action = "https://gitbox.net/process.php"&gt;ユーザー名:&lt;入力タイプ= "text" name = "username"&gt; &lt; input type = "submit" value = "submit"&gt; &lt;/form&gt; </code>

Process in Process.php

<code> $ conn = new mysqli( 'localhost'、 'user'、 'password'、 'database');

if($ conn-> connect_error){
die( '接続失敗:'。$ conn-> connect_error);
}

$ username = $ _post ['username'];
$ safe_username = $ conn-> real_escape_string($ username);

$ sql = "select * fromユーザーからusername = '$ safe_username'";
$ result = $ conn-> query($ sql);

if($ result && $ result-> num_rows> 0){
エコー「ユーザーはすでに存在します」。
} それ以外 {
エコー「ユーザーは存在しません」;
}
</code>

5。概要

mysqli :: real_escape_stringは、SQL注入を防ぐためのPHPの重要なツールの1つです。ユーザー入力の特殊文字を逃れることにより、SQLステートメントの正当性を保護します。ただし、セキュリティを高めるために、開発者は前処理ステートメントの使用を優先順位付けする必要があります。 REAL_ESCAPE_STRINGの基本的な使用法を理解した後、ユーザー入力をより自信を持って処理し、データベースと安全に対話できます。