ホームページ >php教程 >PHP开发 >mybatis の # と $ の違いについての簡単な説明

mybatis の # と $ の違いについての簡単な説明

高洛峰
高洛峰オリジナル
2017-01-05 17:22:561421ブラウズ

1. #受信データを文字列として扱い、自動的に受信するデータに二重引用符を追加します。例: #user_id# で並べ替えます。渡された値が 111 の場合、SQL に解析されたときの値は「111」で並べられます。渡された値が ID の場合、解析された SQL は「id」で並べられます。

2. $ 受信データを直接表示し、SQL で生成します。例: $user_id$ で並べ替え、渡された値が 111 の場合、SQL に解析されたときの値は user_id で並べ替えられます。渡された値が ID の場合、解析された SQL は

3 で並べられます。 #Method は SQL インジェクションを大幅に防ぐことができます。

4.$メソッドではSQLインジェクションを防ぐことはできません。

5. $ メソッドは通常、テーブル名などのデータベース オブジェクトを渡すために使用されます。

6. 通常 # を使用できる場合は、$ を使用しないでください。

MyBatis をソートするときに、動的パラメーターによる順序を使用する場合。注意が必要です。#

文字列置換の代わりに $ を使用してください

デフォルトでは、#{} 形式の構文を使用すると、MyBatis は準備されたステートメントのプロパティを作成し、それに対して安全な値 (? など) を設定します。これは安全で高速であり、推奨される方法ですが、変更されていない文字列を SQL ステートメントに直接挿入したい場合もあります。たとえば、ORDER BY と同様に、次のように使用できます。 ORDER BY ${columnName}

MyBatis は、ここで文字列を変更したりエスケープしたりしません。

重要: ユーザーからの出力を受け入れて、それをステートメント内で不変の文字列として提供することは安全ではありません。これは潜在的な SQL インジェクション攻撃につながるため、ユーザーがこれらのフィールドに入力できるようにすべきではありません。通常は、エスケープして自分でフィールドを確認する必要があります。

上記は、編集者が作成した mybatis の # と $ の違いに関する簡単な説明の全内容です。PHP 中国語 Web サイトをサポートしていただければ幸いです~

# と $ の違いに関するその他の関連記事はこちらです。 mybatis の $ については、PHP 中国語 Web サイトを参照してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。