SQL インジェクションの詳細

SQL インジェクションの詳細

1. SQL インジェクションとは何ですか?

SQL インジェクションは、入力パラメータに SQL コードを追加し、それを SQL サーバーに渡して解析および実行する攻撃方法です。

2. それはどのようにして起こったのですか?

ウェブ開発者は、すべての入力がサニタイズされていることを保証できない

攻撃者はSQLサーバーに送信された入力データを使用して実行可能なSQLコードを構築します。

データベースはセキュリティのために構成されていません

3. SQL の脆弱性を見つけるにはどうすればいいですか?

Webアプリケーション内のすべての入力ポイントを識別する

どのような種類のリクエストが例外をトリガーするかを理解していますか? (特殊文字 " または ')

サーバー応答の異常を検出する

4. SQL インジェクション攻撃を実行するにはどうすればいいですか?

デジタルインジェクション:

id=1 または 1=1 の場合、tablename から * を選択します。

文字列の挿入:

MySQL のコメント機能:

# と -- の後の文字はコメントアウトされているため、どのようなパスワードを入力しても正しく照会できます。画像の説明を入力するにはここをクリックしてください

5. SQL インジェクションを防ぐにはどうすればいいですか?

入力形式を厳密にチェックします: is_numeric(var)、tp5検証を検証し、正規表現を使用して文字列が[A-Za-z]の範囲内であるかどうかを確認します。

エスケープ: addslashes(str),

エスケープするためのmysqli_escape_string()関数

6.MySQLiのプリコンパイルメカニズム

パラメータ化されたバインディング

パラメータ化されたバインディングは、SQL インジェクションを防ぐもう 1 つの障壁です。 PHP MySQLi と PDO はどちらもこのような機能を提供します。たとえば、MySQLi では次のようにクエリを実行できます。

PDO はさらに便利です。たとえば、次のようになります。

以下もご興味があるかもしれません:
  • Java面接の質問分析:SQLインジェクションの判断と防止
  • SQL インジェクションの原則とソリューションコードの例
  • ibatis で SQL インジェクション問題を解決する
  • Win2003 サーバー アンチ SQL インジェクション アーティファクト - D シールド_IIS ファイアウォール
  • SQL インジェクション ツール_PowerNode Java アカデミー
  • SQL インジェクションの原理の紹介_PowerNode Java アカデミー
  • SQL インジェクションのある Web サイトを見つける方法 (必読)
  • 簡単なSQLインジェクションを共有する
  • Mybatis による SQL インジェクション防止の例
  • Hibernate使用時にSQLインジェクションを防ぐためのいくつかのソリューション
  • SQLインジェクションを防ぐ効果的な5つの方法のまとめ
  • SQLインジェクションにおけるファイルの読み取りと書き込み方法のまとめ

<<:  opensslを使用して無料の証明書を生成する方法

>>:  Node.js でメモリ効率の高いアプリケーションを作成する方法

推薦する

Unicode 署名 BOM の詳細な説明

Unicode 署名 BOM - BOM とは何ですか? BOM は Byte Order Mark...

いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる

目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...

HTML に埋め込まれた MP4 形式のビデオが再生できないのはなぜですか?

次のコードは、私の test.html にあります。ビデオは、c:\test.html などの絶対パ...

5分でWebRTCビデオチャットを構築する

前回の記事では、Ubuntu 上の webrtc ベースの多人数ビデオチャット サービスの詳細なコー...

Meituan DBデータをデータウェアハウスに同期するアーキテクチャと実践

背景データ ウェアハウス モデリングでは、何ら処理されていない元のビジネス レイヤー データは OD...

MySQL Limitパフォーマンス最適化とページングデータパフォーマンス最適化の詳細な説明

MySQL Limit はセグメント内のデータベース データをクエリでき、主にページングで使用されま...

MySQLデータベースとOracleデータベース間のバックアップをインポートする

OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...

Ubuntuサーバーの一般的なコマンドの概要

以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

getdata テーブル テーブル データ 結合 mysql メソッド

パブリック関数 json_product_list($where, $order){ グローバル ...

CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

目次1. 基本を理解する2. システム環境を確認する3. ftpコマンドをインストールする[オプショ...

MySQL 8.0.21 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.21のインストールと設定方法を記録してみんなで共有します。 1. ダウンロード1...

VMware 仮想マシン ubuntu18.04 インストール チュートリアル

インストール手順1. 仮想マシンを作成する 2. [カスタム(詳細)]を選択し、[次へ]をクリックし...

RedisとMySQLの違いを簡単に説明してください

MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...

MYSQL における char と varchar の違い

CHAR 型と VARCHAR 型は似ていますが、主に格納場所、末尾のスペース、取得方法が異なります...