0

我正在使用 Flask-HTTPAuth ( https://github.com/miguelgrinberg/Flask-HTTPAuth ) 通过用户名和密码保护我的 API。由于它在端口 8080 上运行,因此我在我的 VM 上打开了该端口并将其公开。我还能做些什么来使 API 更安全吗?

顺便说一句,我在 Flask 前使用 Tornado 作为可扩展的服务器。而且我是唯一一个使用 API 的人,因此拥有一个用户名-密码对对我来说是一个可行的选择。

谢谢。

编辑 - 我可以在 Windows 防火墙上做些什么来使端口 8080 更安全吗?

4

1 回答 1

2

以下是我看到的一些风险(排名不分先后)以及减轻风险的方法:

服务器配置错误

如果您的服务器存在可利用的安全漏洞或配置错误,它可能允许某人访问该机器,从而访问您的数据库。为防止这种情况,最佳实践包括自动应用安全更新、拥有 NDS 等(听起来你通过 corpnet 获得了相当多的保护)

密码窥探

HTTP 基本身份验证以明文形式发送,因此理论上网络中的任何人都可以嗅探您的网络流量,窃取您的密码,然后连接到机器本身。这里的最佳实践是使用 HTTPS 和其他一些协议进行身份验证。这里的需求归结为你试图保护这些信息的人。

API 漏洞

任何 API 都提供对系统的输入,这可能导致漏洞。SQL注入攻击是攻击数据库时常见的一种。确保永远不要进行原始 SQL 查询并采取其他最佳实践(边界检查等)

蛮力攻击

如果没有密码,恶意用户可以继续尝试不同的组合,直到找到成功的组合。这里的解决方案包括使用强密码、实施节流和日志记录以检测暴力攻击。这里的其他攻击包括泄露信息(例如当更多密码错误时返回更快,从而导致更快地猜测正确密码)

TL;博士

对于您的用例(单用户访问,在公司帐户后面),我认为 http 基本身份验证可能是一个合理的做法。您的决定应归结为 1) 您对网络上其他用户的信任程度 2) 您尝试保护的数据有多有趣(例如信用卡或健康信息等)

如果您不信任您的公司网络来保护您的数据安全,或者正在寻找更多的深度防御,我会考虑使用 https 来防止嗅探密码,然后使用强密码。

于 2016-02-19T23:25:05.203 回答