c# - DNS 区域文件的有效字符是什么以及如何清理用户输入?

标签 c# dns bind

我正在开发一个界面,以允许我们的客户自行更新其 DNS。

我有两个问题:

  1. 什么构成有效的主机和目标记录? (A、CNAME、MX、TXT),即如果用户为主机和目标输入 ........,则 DNS 服务器不会这样做。
  2. 是否有一个正则表达式可以用来清理用户输入?

顺便说一句,它是 BIND9 DNS 和 C# Web 应用程序。

谢谢

凯尔

最佳答案

域名标签从技术上讲可以包含任何八位字节值,但通常它们仅包含字母数字以及连字符和下划线字符。

这来自 RFC 1035 第 2.3.1 节中的建议:

The labels must follow the rules for ARPANET host names. They must start with a letter, end with a letter or digit, and have as interior characters only letters, digits, and hyphen. There are also some restrictions on the length. Labels must be 63 characters or less.

下划线字符是最近添加的,通常用于 SRV 记录的标签部分。

如果您要让用户创建自己的子域,您还可以允许使用“.”字符。

可能的是:

  • A 记录 - 必须是点分四组 IP 地址
  • CNAME 记录 - 必须是其他合法标签
  • MX 记录 - 16 位整数优先级字段和合法主机名。注意:有些人放入的标签本身仅指向 CNAME 记录。这是令人不悦的。
  • TXT记录 - 任何你喜欢的内容!

请注意,在每种情况下,如果您确实允许使用不在正常集中的任何字符,那么如果它们存储在 BIND 格式区域文件中,则需要对其进行转义。

关于c# - DNS 区域文件的有效字符是什么以及如何清理用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/509640/

相关文章:

c# - xamarin.droid 中 UITest 的引用问题

c# - C# 中用于文本框控件的 selectall() 属性

c# - FTP 在 C# 中传输期间更改 PGP 文件

c# - 如何/在何处使用 PRISM 和 Unity 在 MVVM 中实例化模型对象

http ://mysite. com 与 http ://www. mysite.com 的 JavaScript 问题

C++ std::bind 重新绑定(bind)函数

jquery表单检查,如果值为空,则解除绑定(bind)提交点击

dns - apache中具有相同ip和端口的多个域

dns - 以点号结尾的域名

javascript - 如何正确地将其绑定(bind)到 Javascript 中的 getter/setter