検索
ホームページphp教程PHP开发mybatis の # と $ の違いと SQL インジェクションを防ぐ方法についての簡単な説明

mybatis の # と $ の違い

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

3 #この方法により、SQL インジェクションを大幅に防ぐことができます。

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

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

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

SQL インジェクションを防ぐ

注: SQL ステートメントを select * from t_stu where s_name like '%$name$%' として記述します。これはインジェクション攻撃に対して非常に脆弱です。

「${xxx}」形式のパラメータは SQL コンパイルに直接関与するため、インジェクション攻撃を避けることはできません。ただし、動的なテーブル名と列名に関しては、「${xxx}」などのパラメータ形式のみを使用できます。

mybatisのマッピング文を書くときは、「#{xxx}」の形式を使用するようにしてください。 「${xxx}」などのパラメータを使用する必要がある場合は、SQL インジェクション攻撃を防ぐために手動でフィルタリングする必要があります。

<sql id="condition_where"> 
  <isNotEmpty property="companyName" prepend=" and "> 
    t1.company_name like #companyName# 
  </isNotEmpty> 
</sql>


Java コードは元のコードと似ていますが、null と '%' の判定をメソッドにカプセル化するのが面倒だと感じる場合は、何も問題ありません。

上記は、mybatis の # と $ の違いと SQL インジェクションを防ぐ方法についての編集者の簡単な説明です。皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです~


mybatis の # と $ について詳しくは、関連するものをご覧ください。 $ の違いや SQL インジェクションを防ぐ方法に関する記事は、PHP の中国語 Web サイトに注目してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター