linsida1 opened a new issue, #14361:
URL: https://github.com/apache/dubbo/issues/14361

   ### Pre-check
   
   - [X] I am sure that all the content I provide is in English.
   
   
   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no 
similar issues.
   
   
   ### Apache Dubbo Component
   
   Java SDK (apache/dubbo)
   
   ### Dubbo Version
   
   环境:Dubbo SDK 3.2.13, jdk21
   
   
当使用nacos作为注册中心,设置用户名密码包含“#”字符时候,导致URLStrParser.parseURLBody()忽略“#”后面的字符,从而导致解析失败。
   
   
![image](https://github.com/apache/dubbo/assets/18373569/651c4f9a-cc31-472a-81d4-668150aaf8e7)
   
   具体错误信息如下:
   
   java.lang.RuntimeException: Can not create registry 
service-discovery-registry://111.230.37.113:18848/org.apache.dubbo.registry.RegistryService?REGISTRY_CLUSTER=default&application=service-cbill&dubbo=2.0.2&executor-management-mode=isolation&file=./service-cbill/dubbo/1&file-cache=true&group=test&interface=org.apache.dubbo.registry.RegistryService&logger=slf4j&password=nacos#2_024&pid=20182&register=false&registry=nacos&registry-type=service&registry.type=service&release=3.2.13&username=nacos
        at 
org.apache.dubbo.registry.support.AbstractRegistryFactory.getRegistry(AbstractRegistryFactory.java:105)
        at 
org.apache.dubbo.registry.RegistryFactoryWrapper.getRegistry(RegistryFactoryWrapper.java:33)
        at 
org.apache.dubbo.registry.RegistryFactory$Adaptive.getRegistry(RegistryFactory$Adaptive.java)
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.getRegistry(RegistryProtocol.java:459)
        at 
org.apache.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:266)
        at 
org.apache.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:79)
        at 
org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper.export(ProtocolSecurityWrapper.java:84)
        at 
org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:66)
        at 
org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:58)
        at 
org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.export(ProtocolSerializationWrapper.java:50)
        at 
org.apache.dubbo.rpc.protocol.InvokerCountWrapper.export(InvokerCountWrapper.java:42)
        at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java)
        at 
org.apache.dubbo.config.ServiceConfig.doExportUrl(ServiceConfig.java:947)
        at 
org.apache.dubbo.config.ServiceConfig.exportRemote(ServiceConfig.java:917)
        at 
org.apache.dubbo.config.ServiceConfig.exportUrl(ServiceConfig.java:857)
        at 
org.apache.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:602)
        at 
org.apache.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:583)
        at 
org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:540)
        at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:340)
        at 
org.apache.dubbo.config.deploy.DefaultModuleDeployer.exportServiceInternal(DefaultModuleDeployer.java:477)
        at 
org.apache.dubbo.config.deploy.DefaultModuleDeployer.exportServices(DefaultModuleDeployer.java:424)
        at 
org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:174)
        at 
org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:156)
        at 
org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:157)
        at 
org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:143)
        at 
org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:52)
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
        at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
        at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
        at 
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:984)
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
        at 
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
        at 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
        at 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
        at 
org.cbill.base.ServiceCBillApplication.main(ServiceCBillApplication.java:16)
   Caused by: java.lang.NumberFormatException: For input string: "nacos"
        at 
java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:661)
        at java.base/java.lang.Integer.parseInt(Integer.java:777)
        at 
org.apache.dubbo.common.URLStrParser.parseURLBody(URLStrParser.java:161)
        at 
org.apache.dubbo.common.URLStrParser.parseDecodedStr(URLStrParser.java:59)
        at org.apache.dubbo.common.URL.valueOf(URL.java:258)
        at org.apache.dubbo.common.URL.valueOf(URL.java:238)
        at 
org.apache.dubbo.registry.nacos.NacosServiceDiscoveryFactory.createRegistryCacheKey(NacosServiceDiscoveryFactory.java:31)
        at 
org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory.getServiceDiscovery(AbstractServiceDiscoveryFactory.java:53)
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.getServiceDiscovery(ServiceDiscoveryRegistry.java:133)
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.createServiceDiscovery(ServiceDiscoveryRegistry.java:119)
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.<init>(ServiceDiscoveryRegistry.java:94)
        at 
org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory.createRegistry(ServiceDiscoveryRegistryFactory.java:40)
        at 
org.apache.dubbo.registry.support.AbstractRegistryFactory.getRegistry(AbstractRe
   
   ### Steps to reproduce this issue
   
   
   1. 启动nacos2.3.2注册中心,修改用户密码,让它包含#字符。
   2. 使用spring boot 配置dubbo。
   3. 启动dubbo提供者,程序出现错误。
   
   ### What you expected to happen
   
   因为密码增加特殊字符可以让它更加难被破解。我觉得让nacos设置密码包含“#”是可被接受的。希望dubbo 
SDK能够优化解析URL的逻辑,允许密码出现特殊字符。
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit a pull request to fix on your own?
   
   - [ ] Yes I am willing to submit a pull request on my own!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to