たとえば、テキストボックス名を指定すると、ユーザー要件はワイルドカード検索(contains、starts with、ends withなど)を実行できるようにする必要があります。
バックエンド(Java)でパラメーター化されたクエリを使用している限り、SQLワイルドカード文字('%'および'_')を入力として受け入れても大丈夫ですか?事実上、ユーザーが独自の正規表現を作成できるようにします。これは、ユーザーの要件のすべてです。
例:
ユーザーは
textbox = '%are%'
このパラメータは、バックエンドに次のようにフィードされます。
public class PersonDaoImpl { public List<Person> search(String name){//name gets the value from textbox w/ sql wildcards Query q = mgr.createNativeQuery('select * from Person where name like :name'); //default to always use like since expecting searchkey with sql wildcards q.setParameter('name', name);//gives the input from the screen return q.getResultList(); } }
- 結果セットには、ユーザーが正規表現を提供したため、予想どおり、「Waren」、「Jared」、「Clare」、「Blare」という名前のユーザーが含まれます。
SQLパラメータ化クエリを使用すると、SQLインジェクションを許可しないようにすることができます。これはワイルドカード検索のユーザー要件を実装しますが、おそらく私が見逃した可能性のあるものに違反していますか?
更新:Googleがヘルプページからワイルドカードも許可していることがわかりました。