JSR 303 Bean 検証用のHibernate Validator impl や、 ESAPIバリデーター インターフェイスとそのDefaultValidator実装など、入力検証用のさまざまなフレームワークを見てきました。
ESAPI 入力検証は、ESAPI.properties ファイルによる正規表現パターン マッチングを中心に展開します。
ESAPI ルート:
ESAPI プロパティ:
Validator.SafeString=[A-Za-z0-9]{0,1024}$
Java クラス:
ESAPI.validator().isValidInput("Name","darthvader", "SafeString", 255, false)
Hibernate Validator/Spring MVC ルート
Hibernate には、さまざまな制約アノテーション (@NotNull、@Size、@Min、@Pattern、@Valid など) を使用して Bean にアノテーションを付けることが含まれます。また、Spring MVC を検証ルールに統合します。
@RequestMapping(value = "/appointments", method = RequestMethod.POST)
public String add(@Valid User user, BindingResult result) {
....
}
Hibernate Validator/Spring MVC を使用すると、正規表現マッチングなどで同様の機能が提供されるようです。Hibernate Validator API よりも ESAPI ライブラリを使用する利点はありますか? 多分SQLインジェクション/ XSSまたはその性質のものですか?XSS/SQL インジェクションに対するセキュリティは、ESAPI 入力検証フレームワークにすぐに提供されますか? どちらか一方を使用するよりも実際の利点があります。前もって感謝します。
私自身の質問への回答: 私は投稿の独自の解決策にたどり着いたと思います。Hibernate/Spring MVC を使用すると、かなり堅牢な Bean 検証機能が可能になります。また、Hibernate は @SafeHtml、@Pattern などのセキュアなアノテーションを提供します。基本的に、Bean 検証を提供するアノテーションの複合セットを設定できます。http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/