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 でメモリ効率の高いアプリケーションを作成する方法

推薦する

mysql の認証、起動、およびサービスの起動のための一般的なコマンド

1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...

WeChatミニプログラムでトークンの有効期限を処理する方法

目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...

シンプルなドラッグ効果を実現するjs

この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

MySQL パーティション テーブルに関するパフォーマンス バグ

目次2. pt-pmapを使用したスタック分析3. このコラムのボトルネックポイントの分析4. パー...

モバイル端末の水平および垂直画面ビューポート検出を決定するための js のいくつかの方法

目次1. 異なるビューポートを取得する方法2. 水平画面と垂直画面のJavaScript検出3. 水...

HTML と CSS に関する基本的なメモ (フロントエンドでは必読)

HTMLに触れた当初はレイアウトにいつもテーブルを使っていましたが、とても面倒で見た目も悪かったの...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。

問題点: docker run に -v パラメータを追加すると、コンテナは常に再起動状態になります...

JavaScriptにおけるこれの深い理解

Jsでのこれの深い理解JavaScriptスコープはstatic scopeスコープですが、 Jsの...

CSS変数を使用してダークモードを実装するためのサンプルコード

最近、WeChatはAppleによってダークモードの開発を強制されました。ますます多くのウェブサイト...

MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します

非常に便利な機能group_concat() について、マニュアルには次のように記載されています: ...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

WindowsでのNginxの起動や停止などの基本操作コマンドの詳しい説明

Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...

LDAP ユーザー認証を使用するように Linux を構成する方法

私は CentOS に実装された LDAP ユーザー管理を使用しています。これはインターネット上のほ...

JavaScript クロージャの詳細

目次1. クロージャとは何ですか? 2. 閉鎖の役割序文: JavaScript部分ではクロージャが...