2017-07-14 94 views
2

在我的金字塔应用程序中,能够以任何用户身份登录(对于测试/调试,而不是生产)是有用的。我的正常登录过程只是对散列密码进行简单的bcrypt检查。金字塔/ wsgi os.environ后门的安全隐患?

当复制用户提交错误报告,我发现它很有用,只是克隆SQLite数据库,并运行一个简单的脚本这将改变每个人的密码,以一个固定的字符串(只为本地测试)。现在我切换到postgresql这样做不太方便,我正在考虑为我的登录函数安装一个后门。

基本上我希望检查os.environ(从由阿帕奇通过mod_wsgi的加载debug.wsgi文件中设置),用于一个特定的变量“调试”。如果存在,我将允许使用任何密码(对于任何用户)进行登录,绕过密码检查。

这有什么安全隐患?据我了解,当apache加载时,wsgi文件会被发送一次,因此如果production.wsgi文件没有设置该特定变量,攻击者(或无能的用户)可能会欺骗它?

+0

您应该将其命名为'ALLOW_LOGIN_WITH_EMPTY_PASSWORD',然后当它处于活动状态时不允许使用正确的密码登录......虽然我不确定这是如何实现的,因为无论如何您都需要克隆数据库,并且一旦您那么,设置密码就像使用SQLite一样简单。 (并且应该在您获得副本之前通过自动过程完成 - 除去任何其他敏感信息 - ) – Ryan

+0

谢谢,但这并没有直接解决安全问题。 –

+0

好吧,它通过建议更具体的命名来解决您的“无能的用户”情况。 “攻击者”一开始就没有任何意义。 – Ryan

回答

1

为了实例与环境的调试功能服务器应用程序,攻击者必须拥有交工你的网络服务器,最有可能具有管理权限。

从外部过程中,攻击者不能修改正在运行的服务器,其被加载到存储器的环境中,没有至少调试能力和良好的有效载荷用于重写存储器。重新加载服务器或尝试在其中执行脚本会更容易。

我认为你是安全的,你要走的路。如果你是偏执狂,确保隔离(删除)从构建到后期的后门。