我不是SNMP协议的专家,也没有在协议的RFC文档中find关于SNMP社区string中连字符容差的内容。 这似乎是双重标准,像思科这样的一些设备支持它,而其他设备则不支持惠普和NetApp。
有没有关于这个双重标准背后的原因的文件?
我很确定,为什么没有官方的说法,尽pipe通过不同厂商的标准的不同实现可能会产生线索。 更糟糕的是,对于一些供应商来说甚至是版本依赖的( 就像在这个VMWare KB中 ,在更新/补丁中添加了对连字符的支持)。
您可以随时在社区string中search允许或禁止的字符列表,但对于不同的供应商也会有所不同( 思科使用@作为SNMP索引,尽pipe它们的一些设备将允许它 )。
最好的办法是不要在SNMP社区string中使用特殊字符,因为这个值是以plaintext传递的,所以你不能通过使得plaintext传输的值更难猜测来增加任何明显的安全措施。 它不需要被猜测; 它可以简单地阅读。
依靠一个好的密码来保护你的SNMP社区string,而不是复杂的社区string。 相同的build议适用于比SNMP更广泛的用户名不提供安全的帐户, 密码 。