3

Spring データを使用します。その要点は、提供されたインターフェイス (CrudRepository など) を使用できるようにすることであり、実際に何かを実装する必要はありません。

アプリが次のことを確認するための措置を講じる必要があることに気付きました。

  • & < > " ' などの不正な HTML 文字を入力からエスケープします
  • SQLインジェクションに対する保護があります

そして、私にとって最も論理的な場所は、すべてのリポジトリが共有する一般的な db メソッドの上位にあるようです。しかし、それらはコードのどこにも実装されていないため、これがすでにSpringデータに実装されているかどうかはわかりません.

4

2 に答える 2

9

ここでは2つの非常に異なる懸念が混在しているようですので、別々に議論しましょう:

  1. SQL インジェクションに対する保護は、対応する SQL っぽい spring-data 実装 (JDBC または JPA) にあります。ですから、気にする必要はありません。汎用 API は、これに関連するものを公開していません。単純に汎用であり、たとえば HBase を使用している場合、「SQL インジェクション」は非常に奇妙に聞こえるからです。

  2. HTML をエスケープすることは、データ層ではなくプレゼンテーション層の問題であるため、まったく別のことです。そのため、保存されたデータを UI に表示する場合は、検証時に入力をリポジトリに送信する前にエスケープするか、後で出力をサニタイズすることができます。

注意として、HTML はデータを配信できる形式の 1 つにすぎません。後で JSON または CSV も生成する必要がある場合は、データベース内のさまざまな形式のエスケープを混在させることになります。これが、エスケープが DAO レイヤーの一部ではない理由と、出力のサニタイズがここで安全な方法である理由です。

于 2012-09-13T06:36:30.323 に答える
0

あなたの懸念に対処するためにescapes illegal HTML characters such as & < > " ' from input

次の使用を検討する必要があります。

org.apache.commons.lang.StringEscapeUtils.escapeHtml(str) 

あなたのサービス層で

このクラスの詳細については、StringEscapeUtils JavaDocsを参照してください。

于 2014-01-25T22:21:46.937 に答える