我最近不得不编写我的第一个JScript,它需要一些数据库连接。
我写了类似
的内容var conn = new OdbcConnection();
conn.ConnectionString = "Driver={Somedriver};"
+ "System=IPNUMBER;"
+ "Uid=SOMEUID;"
+ "Pwd=supersecret;"
最后一行让我真的感到不舒服 - 编写pw明文远非最佳做法。通过教育,我是一名数学家,没有程序员,我想知道两件事:
答案 0 :(得分:3)
密码必须以某种方式恢复,并在运行时使用脚本可用的数据。因此,您当然可以包含某种混淆方案,使得密码在脚本中不那么明显,但最终它并没有为您提供任何帮助 - 只要脚本可以读取信息,它就可以了。对已获得该脚本的攻击者可读。
通常的答案是将密码放在脚本之外,放在一个可由脚本代码读取的单独文件中。实际上,将所有特定于部署的详细信息(如数据库连接字符串)拆分为单独的文件(通常是配置文件或调用存根)是个好主意,因此您可以与部署详细信息分开管理代码逻辑。
在服务器应用程序方案中,您可以锁定配置文件的权限,以便只有管理员和服务用户才能读取它;在客户端应用程序方案中,您可以要求每个用户获取自己的数据库凭据。无论哪种方式,由于脚本本身现在只包含逻辑,因此可以安全地分发它并使用源代码存储库对其进行管理。