- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
谁能解释一下它们之间的区别吗?具体来说,是否存在任何安全问题,例如 AutoAddPolicy?提前致谢
最佳答案
这些“MissingHostKeyPolicies”是用于确定如何处理尚未建立为“已知”(即可信)的“主机 key ”(即服务器的公共(public) ssh key )的安全策略。
RejectPolicy 是唯一的安全策略。
AutoAddPolicy 和 warningPolicy 都会让您面临中间人攻击的可能性。
为了理解这一点,让我们看看 ssh:
在 ssh 连接中,服务器都有一个发送给客户端(即您)的公共(public) ssh key 。该公钥可用于唯一标识服务器并权威地验证内容是否确实来自该服务器。
当您在交互式 session 中使用 ssh 时,如果您以前从未连接过服务器,您将看到以下消息:
C:\>ssh x.y.z.com
The authenticity of host 'x.y.z.com' can't be established.
RSA key fingerprint is SHA256:6E5SThbpng6kJWxiKwGl7EXUp1IGOng6kCsRLvRomT.
Are you sure you want to continue connecting (yes/no)?
如果您选择“yes”,主机名/公钥将添加到 .ssh 目录中名为“known_hosts”的文件中(通常位于 ~/.ssh/known_hosts
或 %userprofile%\.ssh\known_hosts
)。然后下次连接时,它就不需要再次提示您,因为它是“已知”主机。如果您在未验证信息的情况下选择"is",则可能会遭受中间人攻击。
如果您选择“否”,则连接将被拒绝。
Paramiko 假设您不会回答这个问题,因此它有政策。
如果在主机 key 文件中找不到主机名/公钥,RejectPolicy 将拒绝连接。
AutoAddPolicy 接受任何连接,无论如何。除此之外,它还将主机/公钥保存到主机 key 中。
WarningPolicy 就像 AutoAddPolicy 一样,只不过它不会将主机/公钥保存到主机 key 中,并且它还会打印出一条可能会被忽略的小警告消息(如果它被看到的话)。
以下是安全连接到允许匿名连接的主机的示例:
with paramiko.SSHClient() as ssh_client:
ssh_client.load_host_keys(os.path.expanduser("~/.ssh/known_hosts"))
ssh_client.set_missing_host_key_policy(paramiko.RejectPolicy())
ssh_client.connect(host)
RejectPolicy 是唯一安全的策略,但有时也会带来不便,具体取决于您更新“known_hosts”的频率。
关于python - paramiko RejectPolicy、AutoAddPolicy、WarningPolicy 的安全隐患是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892703/
我是一名优秀的程序员,十分优秀!