我正在审查Python代码的安全性。
为此,我正在使用Bandits(适用于Python的模块)和DeepCode(www.deepcode.ai)之类的工具。 Bandit发现在硬编码登录名和密码中存在一些漏洞,而DeepCode未发现任何漏洞。这是有问题的代码:
# Guest only login
# Used for Login as Guest button and login the current session as GUEST
APP_GUEST_USERNAME = "ppams.asguest"
APP_GUEST_PASSWORD = "ppams123456"
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '10-6d$q$&xxc9heb(hjeda$w%7pxC#+hhx%b0xl&_q(p8(u#uu'
我发现文章不应该对凭证进行硬编码。以下是一些文章:https://qxf2.com/blog/dont-hardcode-usernames-and-passwords-in-your-test-scripts/; https://www.owasp.org/index.php/Use_of_hard-coded_password; https://www.preemptive.com/blog/article/1059-create-more-secure-applications-don-t-hard-code-credentials-instead-use-application-hardening/106-risk-management。
那么,使用硬编码凭据会有什么风险?你能给我看看一些样品吗? 如果无法对凭据进行硬编码,还有什么方法可以保护凭据呢?
谢谢
答案 0 :(得分:0)
要考虑几件事情,首先,您将无法通过存储库公开项目,因为您的代码将可以清晰访问。 其次,如果您想与朋友共享代码而不必通过公共存储库,那么他们将可以访问您的API密钥或密码。 第三,我们往往会忘记的一个常见危险是,如果您的计算机损坏了并且该人遇到了您的脚本/程序,那么他们也将具有访问权限。 综上所述,如果您的脚本由于安全而停留在与Internet断开连接的计算机上,则不是漏洞,但这仍然是一种不良做法。另一方面,如果由于任何原因共享您的代码,则会很危险。
Ps:一种替代方法是创建一个.ini文件,例如,您将在其中存储所有敏感数据,但不会公开共享。