我正在开发一个web应用程序,这将需要从在PHP和JavaScript的不同脚本的MySQL数据库的使用。我习惯了连接到db mysql_connect("host", "username", "password")的“标准”概念,但我想知道如何让这些字符串远离窥探。我的假设是,如果脚本包含连接信息,那么这些信息就可以用来进入数据库本身,破坏用户信息和其他重要数据。
有什么建议吗?
发布于 2010-11-05 01:48:43
如果您拥有所需的权限,请尝试将连接信息保存在环境变量中,使用它们进行连接,然后取消设置它们。
我记得我在一些书和在线资源中遇到过这种情况,但目前谷歌的前几个页面对此一无所获。
首先,在PHP外部设置两个环境变量,如PHP_MYSQL_USER和PHP_MYSQL_PWD。请注意,您可能需要重新启动web服务器,甚至需要重新启动操作系统才能激活它们。
然后,在PHP中:
mysql_connect('localhost', getenv('PHP_MYSQL_USER'), getenv('PHP_MYSQL_PWD'));
putenv('PHP_MYSQL_USER=');
putenv('PHP_MYSQL_PWD=');putenv在某种程度上是可选的,如果您在系统中包含不安全的第三方或用户脚本等,则使用它们会使环境变量在其余的执行过程中不可用。
通过使用这种方法,即使有人拿到了你的脚本,他们也不会知道你的数据库凭证。但请记住,如果任何人将脚本/shell上传到您的服务器,他们仍然可以看到这些变量。您可以将上传目录保存在PHP不可执行和/或权限较低的完全不同的区域。您必须检查您的上传的安全性,对于这种机制和任何其他服务器的事情。
顺便说一句,请看一看PHP PDO,而不是使用糟糕的mysql_connect()。你可以搜索出无数的原因。
发布于 2010-11-05 01:40:33
如果有人可以访问您的脚本的源代码来查看这些密码,那么您已经有大麻烦了。确保这些脚本具有正确的文件权限等(即只有那些需要它的人才能读取)。
https://stackoverflow.com/questions/4099503
复制相似问题