Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于用户名验证的java和javascript之间的正则表达式差异_Javascript_Java_Regex_Wso2_Wso2is - Fatal编程技术网

用于用户名验证的java和javascript之间的正则表达式差异

用于用户名验证的java和javascript之间的正则表达式差异,javascript,java,regex,wso2,wso2is,Javascript,Java,Regex,Wso2,Wso2is,目前,我们正在实现一个WSO2身份服务器,我正在检查配置。我的目标是在用户名中启用空格。这些默认情况下是不允许的,并且受到一些正则表达式的保护。我不明白为什么前端和后端的正则表达式不同 以下是取自repository/conf/user mgt.xml的代码片段: <Property name="UsernameJavaRegEx">[a-zA-Z0-9._\-|//]{3,30}$</Property> <Property name="UsernameJavaSc

目前,我们正在实现一个WSO2身份服务器,我正在检查配置。我的目标是在用户名中启用空格。这些默认情况下是不允许的,并且受到一些正则表达式的保护。我不明白为什么前端和后端的正则表达式不同

以下是取自
repository/conf/user mgt.xml
的代码片段:

<Property name="UsernameJavaRegEx">[a-zA-Z0-9._\-|//]{3,30}$</Property>
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._\-|//]{3,30}$</Property>
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
是否有某种OWASP用户名验证的最佳实践?到目前为止我什么也没发现


欢迎提供任何帮助或信息。

是的,你说得对。如果您不想浪费用户填写表单的时间,它们应该是相同的,或者这无关紧要,因为一个正则表达式对另一个正则表达式施加了限制,有时人们在确定传入数据时不必再次验证。但在您的情况下,前端使用的是一个,可以修改,因此后端使用的应该是精确的

Java中使用的正则表达式似乎允许在用户名中使用特殊字符,如pipe
|
和斜杠
/
。关于正则表达式的这种不一致用法,您应该确认它是一种需要或要求

无论使用哪种方法,仅此正则表达式
[a-zA-Z0-9.\-|/]{3,30}$
就允许任何类型的字符后面有长度超过30个字符的用户名,因为没有定义字符串锚定的开头
^
(您可能需要它)

是否有某种OWASP最佳实践

是的,有。只是不要验证奇怪的字符,即
\x00


作为补充说明,您将密码限制在一定的长度。

注意,空格被视为文字空格字符-这不是“拆分”。这听起来对我很好。OWASP也不会以任何方式拒绝使用空格,所以我将使用它。谢谢我仍然希望有人对我问题的第一部分有一个解释。太棒了-非常感谢你的澄清!我还想知道为什么我们应该限制密码长度,但我仍然在这个身份服务器设置和清理的事情开始。我觉得我不应该相信他们文档中的每一个配置和示例。
[a-zA-Z0-9._\-|//]{3,30}$    ==>    [a-zA-Z0-9 ._\-|//]{3,30}$
^[\S]{3,30}$                 ==>    ^[\S ]{3,30}$