JPAを学び始めています。使用するためにリファクタリングする必要があるかなりの量の従来のEJB2.0コードがあります新機能、およびコードベースに追加する新しい機能について説明します。私のコードで説明する必要がある新しい攻撃ベクトルがあるか、または防御プログラミングが私をカバーしますか?Java Persistence API(JPA)で目にする必要があるセキュリティ上の懸念事項
答えて
JPAはJDBCのようなものです。バックエンド技術です。 JDBCに適用されるのと同じセキュリティ上の懸念がJPAに適用されます。したがって、ほとんどのセキュリティの考慮事項はアプリケーションレベルで実装されるか、フロントエンドAPIによって処理されます。しかし、確かにJPQL注入はあなたが知っておくべき明白なものです。
JPQL注入:
ただ、SQLまたはJDBC APIを使用しているとき、あなたは直接クエリ文字列にパラメータを追加することはありませんが好きです。 QueryオブジェクトのsetParameterを使用するか(アドホッククエリと名前付きクエリの両方に適用されます)、JPA criteria APIを使用することができます(ただし、名前付きクエリが最適なパフォーマンスを提供します)。
Query query = em.createQuery("DELETE Order WHERE customer = :customer");
query.setParameter("customer", customer);
query.executeUpdate();
データベース権:
余分なセキュリティのために、あなたが作ることができ、複数の永続ユニット(PU)ので、すべてのセキュリティ侵害の影響は限定的です。たとえば、異なるデータベースアクセス権を持つ複数のPUを作成することができます.1つは更新権限があり、もう1つは読み取り専用のクエリアクセスです。このような意思決定がアプリケーション設計に影響することを理解してください。
信頼できないソースから受け取ったバイトからオブジェクトを逆シリアル化すると、ブートクラスパス上のすべてのクラスがpublicかどうかに関わらずロードされ、そのクラスの初期化が実行されます。また、副作用を伴うコンストラクタやカスタム非直列化メソッドを使用して権限を取得することもできます。
クラスパスがよく権威は直列化可能クラスのコンストラクタを介して到達可能であること、最新のJVMに同梱されてRhinoの通訳、またはjavacにjavax.toolsインタフェースのような無制限の権限を持つpublicクラスを、知らと含まれている場合は、攻撃者はこれを使用して任意のJavaコードを実行することができます。実際には、これは、java.lang.Runtime
を介して現在のユーザーの特権を持つ任意のユーザー呼び出しコードを意味します。
最初の基準は容易に満たされます。 2番目の方はおそらくそれほど簡単には出会えないでしょう。
これはJPAと何か関係があるのかどうかは分かりません。 – Kdeveloper
+1あなたのご意見をお寄せいただきありがとうございます。 – bakoyaro
@Kdeveloper、私はJPAエンティティがシリアライズ可能である必要があるという印象を受けました。しかし、あなたは正しい。 JPAエンティティが永続性のためにJavaシリアル化を使用していない場合、私の投稿は無関係です。 –
- 1. セキュリティ上の懸念
- 2. PendingIntent.getBroadcast()セキュリティ上の懸念?
- 3. listiteratorに関する懸念事項を削除します。java
- 4. IFilterProviderと懸念事項の分離
- 5. クライアント側のセキュリティ上の懸念(JavaScript)
- 6. paypal_adaptive gemのセキュリティ上の懸念
- 7. IIS6ワイルドカードマッピングのセキュリティ上の懸念?
- 8. C# - InternalsVisibleTo属性のセキュリティ上の懸念
- 9. jarファイルにアクセスする際のセキュリティ上の懸念
- 10. JSFのセキュリティ上の懸念はありますか?
- 11. RESTフルWebサービスに関するセキュリティ上の懸念
- 12. ファイルのアップロードのセキュリティ懸念
- 13. preg_replace&preg_replace_callbackセキュリティの懸念
- 14. Webサーバー上でラテックスを動的にコンパイルする際のセキュリティ上の懸念
- 15. AJAXには特別なセキュリティ上の懸念がありますか?
- 16. Rails:懸念事項への引数の受け渡し
- 17. HTML5オフライン単一ページアプリケーション(SPA) - セキュリティ上の懸念
- 18. データアノテーションは懸念事項の分離に違反しますか? - asp.net mvc
- 19. Java Persistence(JPA)ヒープ問題
- 20. Fiware:Cepheusのセキュリティ上の考慮事項?
- 21. セキュリティクロスカッティングに関する懸念
- 22. Webサービス経由でsystem.dllを公開するとセキュリティ上の懸念はありますか?
- 23. 懸念
- 24. Gson Securityの懸念
- 25. Railsエンジンで懸念事項を作成するにはどうすればよいですか?
- 26. 信頼できるブラウザ内の完全なアプリケーションに関するセキュリティ上の懸念
- 27. データベースパフォーマンスの懸念
- 28. のRails:懸念
- 29. コーディングプラクティスに関するセレンの懸念
- 30. チームコラボレーションシステムの推奨事項が必要
アプリケーション層にPreparedStatementを作成していますか?それらを使用すること(AFAIK)はSQLインジェクションに対する主な防御であり、通常はデータレイヤーで作成されます。 – bakoyaro
良い点。ベストプラクティスが習慣になれば、悪い選択肢を忘れることがあります。私はそれを私の答えに加えました。 – Kdeveloper
プレーンテキストプロトコルを開発するたびに、ロシアのハッカーはタイプセーフティの欠如を悪用します。 –