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. セキュリティ上の懸念事項ウェブサイトの構築について
- 3. セキュリティ上の懸念
- 4. "com.worklight.common.WLPreferences"を使用してセキュリティ上の懸念事項をエクスポートする
- 5. KSMに関するセキュリティ上の懸念
- 6. 懸念事項とサービス
- 7. PendingIntent.getBroadcast()セキュリティ上の懸念?
- 8. listiteratorに関する懸念事項を削除します。java
- 9. IFilterProviderと懸念事項の分離
- 10. S3へのダイレクトブラウザアップロードのセキュリティ上の懸念
- 11. Jquery Ajaxのセキュリティ上の懸念
- 12. クライアント側のセキュリティ上の懸念(JavaScript)
- 13. C# - InternalsVisibleTo属性のセキュリティ上の懸念
- 14. window.postMessage()+ iframe + developerツールのセキュリティ上の懸念
- 15. IIS6ワイルドカードマッピングのセキュリティ上の懸念?
- 16. paypal_adaptive gemのセキュリティ上の懸念
- 17. Azure Windows VM上のSQL Serverに関するセキュリティ上の懸念
- 18. ルート上の懸念事項の使用方法ruby on rails
- 19. innerHTMLを使用していますが、セキュリティ上の懸念事項は何ですか?
- 20. travis-ciでのスクリプト実行に関するセキュリティ上の懸念
- 21. jarファイルにアクセスする際のセキュリティ上の懸念
- 22. Cordova/Phonegappのセキュリティに関する懸念
- 23. 状態管理だけがフロントエンドの懸念事項ですか?
- 24. JSFのセキュリティ上の懸念はありますか?
- 25. AWSラムダストライプ支払いバックエンド、PCIに関する懸念事項
- 26. リモートデータベースへの接続に関するセキュリティ上の懸念
- 27. RESTフルWebサービスに関するセキュリティ上の懸念
- 28. ファイルのアップロードのセキュリティ懸念
- 29. Tor ControlPortアクセス - セキュリティの懸念?
- 30. preg_replace&preg_replace_callbackセキュリティの懸念
アプリケーション層にPreparedStatementを作成していますか?それらを使用すること(AFAIK)はSQLインジェクションに対する主な防御であり、通常はデータレイヤーで作成されます。 – bakoyaro
良い点。ベストプラクティスが習慣になれば、悪い選択肢を忘れることがあります。私はそれを私の答えに加えました。 – Kdeveloper
プレーンテキストプロトコルを開発するたびに、ロシアのハッカーはタイプセーフティの欠如を悪用します。 –