我已经使用 AutoTrading Bots 一段时间,并与几个经纪人的 API 交互,我注意到他们中的大部分需要套接字 SSL 或 HTTP 请求连接。
现在,事情变得很严重,我想问一下这些类型的连接有多安全。
我一直在通过这种类型的连接处理我的财务数据,并且可能会暴露它。
显然,我使用 VPN(即使我不知道 VPN 在这种情况下如何发挥作用),而且我知道套接字 SSL 连接是加密的(?),但是 HTTP 呢?我怎样才能使这些类型的连接更安全?使用 Selenium 或 BeautifulSoup 输入密码和处理敏感信息是否不安全?
例子:
请求HTTP:
requests.post(url, data=payload, verify=True)
SSL套接字:
def connection(port):
url = ""
context = ssl.create_default_context()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(30)
conn = context.wrap_socket(sock, server_hostname=url)
conn.connect((url, port))
我不知道 VPN 在这种情况下如何发挥作用
VPN 只是在您的计算机和远程网络之间建立安全 连接,就好像您的计算机在本地物理连接到该网络一样。通过该连接的任何流量都无法被监视该连接的恶意代理所理解,只能被同一网络上的设备所理解。
然而,虽然 VPN 可以保护通过开放 Internet 发送的流量,但它无法防止连接网络上运行的恶意代理程序的安全漏洞。因此,仅使用 VPN 连接到受信任的网络。
我知道套接字 SSL 连接是加密的(?)
正确。
但是 HTTP 呢?
HTTP 本身并不安全。但是 HTTPS,只是通过 SSL/TLS 连接的 HTTP,如果使用得当,它是绝对安全的。大多数互联网都依赖 SSL/TLS 来确保安全。
我怎样才能让这些类型的连接更安全?
SSL/TLS 使用点对点加密。理论上,只有相互通信的双方才知道所使用的加密密钥,从而允许发送方使用接收方的密钥来加密只有接收方才能解密的数据,反之亦然。
但是,如果您不小心,恶意代理可能会充当中间人来拦截 SSL/TLS 连接。意思是说
A
想和B
安全地交谈,但是M
在中间。 M
会欺骗 A
与 M
交谈,并欺骗 B
与 M
交谈。 M
和B
说话的时候会假装是A
,和A
说话的时候会假装是B
。因此,M
将获得对两个密钥的访问权限,并能够解密在 A
和 B
之间流动的所有数据。
这就是身份验证发挥作用的地方,通常以 SSL/TLS 证书的形式。这样,
A
可以验证它真的在和 B
说话,而 B
可以验证它真的在和 A
说话。 M
无法访问伪造身份所需的任何证书,因此它不能假装是其中任何一个。
如果您需要通过 HTTP 进行安全通信,请使用 HTTPS 并在传输任何敏感内容之前验证您正在与之通信的对等方。