当前位置: 首页 > 面试题库 >

验证主机名字符串

丘普松
2023-03-14
问题内容

跟进正则表达式以匹配主机名或IP地址?
并使用对有效主机名的限制作为参考,在Python中匹配/验证主机名/
fqdn(完全限定域名)的最易读,简洁的方法是什么?我在下面的尝试中已经回答过,欢迎改进。


问题答案:

import re
def is_valid_hostname(hostname):
if len(hostname) > 255:
return False
if hostname[-1] == “.”:
hostname = hostname[:-1] # strip exactly one dot from the right, if present
allowed = re.compile(“(?!-)[A-Z\d-]{1,63}(?<!-)$”, re.IGNORECASE)
return all(allowed.match(x) for x in hostname.split(“.”))

确保每个细分市场

  • 包含至少一个字符,最多63个字符
  • 仅包含允许的字符
  • 不以连字符开头或结尾。

它还避免了双负号(not disallowed),并且如果hostname以结束.,也可以。如果hostname结尾超过一个点,它将(并且应该)失败。



 类似资料:
  • 问题内容: 我正在开发一个Android应用,并且需要访问一个HTTPS地址。我正在使用Volley来请求我的数据,但现在却收到此错误 要获得SSL工厂,我需要这样做: 队列初始化: 这是堆栈跟踪: 我搜索了错误,但没有找到适合我的情况的内容。谁能帮我? 问题答案: 让我们假设你的服务器的应用程序是具有服务器证书中的服务器机内托管的,例如。然后,在验证方法内部,您可以验证。 您可以通过以下链接阅读

  • 在测试我的客户机-服务器分布式系统时,我最初惊讶地得知TLS的默认JSSE实现不进行主机名验证。我在这个问题中尝试了公认的答案,但我的用例有点不同。我使用RabbitMQ的连接工厂,它抽象了SSLSocket的构造。我只是为连接工厂提供了一个SSLContext。我确实找到了很多关于HTTPS的信息,甚至还有一些其他协议,但并不是总能使用的通用协议,即使是自定义协议。 但是,除了使用之外,关于创建

  • 我正在esp32上实现一个websocket服务器,并且在android studio Simulator上运行的应用程序上使用okhttp lib。 我正在使用由openssl命令生成的自分配证书:openssl req-newkey rsa:2048-nodes-keyout prvtkey.pem-x509-days 3650-out cacert.pem-subj“/cn=esp32 HT

  • 问题内容: 我想仅匹配URL的根,而不匹配文本字符串中的整个URL。鉴于: 我想将最后2个实例解析为或域。 我听说正则表达式很慢,这将是我在页面上的第二个正则表达式表达式,因此,如果仍然需要不使用正则表达式,请告诉我。 我正在寻找此解决方案的JS / jQuery版本。 问题答案: 我建议使用npm软件包psl公共后缀列表。“公共后缀列表”是所有有效域后缀和规则的列表,不仅包括国家/地区代码顶级域

  • 我们使用Spring SAML扩展将Salesforce设置为IDP,我们的应用程序是SP。但我们得到错误“SSL对等方未能通过名称:null的主机名验证” 下面是我们的 SAML 配置类。 我们尝试了将“Spring Security SAML HTTPS链接到另一个页面”的建议,其中1)禁用主机名验证,或2)注释掉Bean“TLSProtocolConfigurer”,并将Salesforce

  • 我有字节数组格式的公钥。在我的数据库里。像这样 在此处输入图像描述 总是suc=false。我确信bytetoverify的值与方法符号中的输入值相同。 我不知道我用这种方式生成公钥是问题还是符号有问题。在符号方法中,我使用sh1和pkcs1,但在验证中,我只找到sh1。 每个人都能帮我吗?