Webサービスコンストラクターには次のパターンがあります。
rUsername = Pattern.compile("[A-z0-9]{4,30}");
rPassword = Pattern.compile("[A-z0-9!@#$%&*()=+-\\\\s]{6,30}");
rQuestion = Pattern.compile("[A-z0-9\\\\s?]{5,140}");
rAnswer = Pattern.compile("[A-z0-9\\\\s]{1,30}");
Webアプリケーションをデプロイするときにスラッシュが4つではなく2つしかない場合、Tomcatから解析例外が発生します。
ユーザー名1は問題なく機能しますが、パスワード、質問と回答に問題があるようです。パスワードは「testasdas」と一致しますが、「test1234」とは一致しません。質問はスペースを含むものとは一致せず、回答は何とも一致しないようです。
パスワードは、小文字と大文字、数字、スペース、およびそこに挿入した記号と一致できるようにする必要があります。質問の1つは、小文字と大文字、数字、スペース、および「?」に一致する必要があり、答えは、大文字と小文字、スペース、および数字だけに一致する必要があります。
編集:パターンは次のように変更されました:
rPassword = Pattern.compile("[A-Za-z0-9!@#$%&*()=+\\s-]{6,30}");
rQuestion = Pattern.compile("[A-Za-z0-9\\s?]{5,140}");
rAnswer = Pattern.compile("[A-z0-9\\s]{1,30}");
これらは多かれ少なかれ私が望む方法ですが、回答で指摘されているように、私はパスワードフィールドをかなり制限しています。これはおそらく良い考えではありません。これは誰も使用しない大学のプロジェクトであり、現実の世界では悪い考えですが、プロジェクトの要件の一部ではなかったため、保存する前に何もハッシュしません。ただし、SQLインジェクション攻撃を停止する必要があるため、すべてが非常に制限されています。私が知っているすべてのSQL攻撃が機能する必要がある使用を主に禁止するという考えでしたが'
、その文字だけを禁止する方法はわかりません。