我在 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 应用程序时只有 2 个斜杠而不是 4 个斜杠,我会从 Tomcat 获得解析异常。
用户名 1 工作正常,但我似乎在密码、问题和答案方面遇到问题。密码将匹配“testasdas”但不匹配“test1234”,问题将不匹配任何带有空格的内容,并且答案似乎不匹配任何内容。
我希望密码能够匹配小写和大写字母、数字、空格和我输入的符号。问题一应该能够匹配小写和大写、数字、空格和'?',而答案只是大写和小写字母、空格和数字。
编辑:模式已更改为:
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 攻击都需要工作,但我不知道如何仅禁止该字符。