3-2最初のAPIとインジェクション攻撃防御

最初のAPIは、ユーザーの基本的なデータの管理の一部を書き込みます。基本的なユーザの追加および削除は、検索を変更することです。万一スプリングブーツは、簡単にこのAPIを書くことができます

最初の新しいMavenプロジェクト


依存関係

依存関係の導入。最新のブート春




https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/

https://docs.spring.io/spring-boot/docs/2.2.0 .RELEASE /参照/ HTML / using-
春-boot.html#使用してブート依存性管理キーワードMavenを検索します。ここでの発見は

、このコピー

のpom.xmlでのプロジェクトにコピーします。この依存関係を持ちます。彼はバージョン番号を記述する必要はありませんでした、さまざまな依存関係の導入後。dependencyManagementので、私たちは、バージョン番号の規定を持っているだけでなくするために。

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

私たちは、HTTPサービスを提供するために、Webプロジェクトを作成したいです。検索するスターター・ウェブを入力します。

日食は、効果的なポンポンを表示することができますなぜ

https://zhidao.baidu.com/question/401757501.html
m4eclipseプラグインの実装。
力(効果的な)への完全な/実績/エントリのMavenのpom.xmlファイル
https://blog.csdn.net/iteye_15147/article/details/82567934

コードを続行

検索ダウンこのコピーはする

ラベル内に依存関係をコピーする

と、バージョン番号を削除します

Webプロジェクトを開始します


パッケージを作成



、起動クラスを作成するために

新規ユーザーパッケージ



追加したユーザークラス

のユーザー・カテゴリーが二つの性質のIDと名前があり


、その後、ロンボク島のバッグを探し、についてはこちらを検索

プロジェクトにコピーして、バージョン番号を削除

これらのアノテーションを追加することに相当@Dataノートを。ゲッターPOJO、セッターメソッド、コンストラクタフルパラメータを生成する方法のクラスを自動的に(永続クラス)のプロパティは、オブジェクトの内部を覆うToStringメソッド、およびサブ高いハッシュコード方式等号

UserControllerで




まず、すべてのメソッド宣言の最初の書き込みのビジネス・ロジック、いない
CRUDの方法は、

ユーザーのメソッドのグループを検索します

攻撃を学びます

2017年TOP10攻撃

最初はインジェクション攻撃です。最も一般的なのは、SQLインジェクションです。

例としては、SQLインジェクション攻撃を実証します

JDBCの導入

SQLインジェクションは、確かに、JDBCの操作を行う必要があります。いくつかのJDBCライブラリを見つけました。




設定データベースに関連するパラメータは




、デフォルトのドライブはのMySql8で使用しています。のノートを取るために、ここで使用した名前の下に駆動ので。これは、ドライブMySql8の新しいクラスのcj.jdbc.Driver名を呼ばれて

も、追加ドライブ検索MySQLを

最終的に予約を

データベーステーブルを構築します

テーブルのフィールド上の



プラスいくつかのテストデータ

コントローラデータベースクエリ内

クエリユーザテーブル、jdbcTemplateの最初の注入は、



テストプログラムの実行

要求に対するHTTPツールでの

名前は何かを見つけること書かれていない



すべてのユーザーがそのシステムにすべてのクエリを置きます。これは、SQLインジェクションのツールである

プログラムブレークポイントプラストラック。または1 = 1は常に条件が満たされています。


最初の入力を行うための入力パラメータを確認し、パラメータを決定するための正規表現を記述します。もう一つは、アクセス制御、ユーザデータベースです。
rootユーザーは何もすることができます。他のユーザーの万一の一つは、すべてのデータベースへのアクセス許可を持っていません。

このようJPA、MyBatisのような、より高度なライブラリデータベース操作のいくつかと。それは、SQLに注入されているので、なぜMybaitsは危険でもありません。まだ使用すると、ノートにいくつかのポイントがあります。
JPAほとんどないリスク。

使用春JPA

依存関係が導入され

、JPA関連する構成と、構成ファイル内で
このプロパティUserオブジェクトの内部の増加は、自動的にデータベースフィールドに追加されます場合は、。他の新しいオブジェクト場合、データベースは自動的にテーブルのうち、よりになります。これは、オブジェクトとデータベースの同期のままになります。開発時間が非常に便利。しかし、一般的な製造には、ときにそれを使用しないように。

ログでは、SQLのJPA最終的な実装を確認でき


、Userクラスプラスエンティティのアノテーションので、データベーステーブル上でこのPOJOクラスをと結合しました。

プラスIDは、JPAを教えてください。この本id属性の主キー。

インタフェースを記述します。UserRepository。これは、データ操作の目的です。私たちは、Userオブジェクトを操作するために使用されます。操作ユーザーオブジェクトには、当社のユーザーテーブルの操作です。

いくつかの動的なクエリを実行するために使用される継承このインターフェース、

基本的なCRUDインタフェースを作成します。ロングは、主キーのタイプを示します

コントローラコードを続行

インジェクションリポジトリ


このように、我々はインターフェイス内で直接彼を宣言します


テストを実行



その結果、空の実施


当社のデータベースにデータを盗むために、SQLインジェクション攻撃を防止しながら達成機能

のログ出力内部のSQLステートメント

終了



 

おすすめ

転載: www.cnblogs.com/wangjunwei/p/11809280.html