Python 使烧瓶API更安全

Python 使烧瓶API更安全,python,flask,tornado,windows-firewall,flask-httpauth,Python,Flask,Tornado,Windows Firewall,Flask Httpauth,我使用flaskhttpauth()用用户名和密码保护我的API。因为它是在8080端口上运行的,所以我已经在我的虚拟机上打开了该端口并将其公开。我还能做些什么来提高API的安全性吗 顺便说一句,我在Flask前面使用Tornado作为一个可伸缩的服务器。我是唯一一个使用API的人,因为对我来说,拥有一对用户名-密码是一个可行的选择 谢谢 编辑-我可以在Windows防火墙上做些什么来提高端口8080的安全性吗?以下是我看到的一些风险(无特定顺序)以及缓解这些风险的方法: 服务器配置错误 如果您

我使用flaskhttpauth()用用户名和密码保护我的API。因为它是在8080端口上运行的,所以我已经在我的虚拟机上打开了该端口并将其公开。我还能做些什么来提高API的安全性吗

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

谢谢


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

以下是我看到的一些风险(无特定顺序)以及缓解这些风险的方法:

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

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

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

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

TL;博士 对于您的用例(企业帐户后面的单用户访问),我认为http basic auth可能是一种合理的做法。您的决定应该归结为1)您对网络上其他用户的信任程度2)您试图保护的数据(如信用卡或健康信息等)有多有趣


如果你不信任你的COPNET来保持你的数据安全,或者正在寻找更深入的防御,我会考虑使用HTTPS来防止密码被窃听,然后使用强密码。

< P>这里有一些我看到的风险(没有特别的顺序)以及减轻它们的方法:

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

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

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

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

TL;博士 对于您的用例(企业帐户后面的单用户访问),我认为http basic auth可能是一种合理的做法。您的决定应该归结为1)您对网络上其他用户的信任程度2)您试图保护的数据(如信用卡或健康信息等)有多有趣


如果你不信任你的CoppNe来保持你的数据安全,或者正在寻找更多的深度防御,我会考虑使用HTTPS来防止窃听密码,然后使用强密码。

有很多不同的途径,从日志记录、节流、使用加密(用基本的AUTH不能得到)。等等。您对该服务器的使用案例是什么?你想避免的最糟糕的事情是什么?@AnilRedshift我只是不想让任何人访问数据库。我的网站是隐藏在一个公司认证,所以这是安全的。我只是担心我的API被打开了。虽然您需要有用户名和密码才能调用/卷曲它,但我只想确保我的数据不易被API暴露。@90abyss API使用者在哪里物理部署?它在同一台机器上吗?有很多不同的途径,从日志记录、节流、使用加密(使用基本身份验证无法获得)等等。您对该服务器的使用情况如何?你想避免的最糟糕的事情是什么?@AnilRedshift我只是不想让任何人访问数据库。我的网站是隐藏在一个公司认证,所以这是安全的。我只是担心我的API被打开了。虽然您需要有用户名和密码才能调用/卷曲它,但我只想确保我的数据不易被API暴露。@90abyss API使用者在哪里物理部署?它在同一台机器上吗?这是非常有用的