使用SetEnv或php.ini存储数据库变量有多安全?

前端之家收集整理的这篇文章主要介绍了使用SetEnv或php.ini存储数据库变量有多安全?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不喜欢在document_root下存储全站点加密密钥和数据库访问信息,所以我在conf.d下使用Apache的SetEnv和PHP.ini文件将它们与代码库分开.最大的问题是,哪一个更好? apache vhost文件(SetEnv SITEKEY’oinkoink!’)或conf.d / xxx.ini文件(db_pass =“oink?”)下的内部环境变量?也许别的什么?

PROS n CONS:

SETENV:

存储在DOCUMENT_ROOT外
只有给定的vhost才能访问
-Visible与PHPINFO() – 黑客需要直接访问/上传利用文件

get_cfg_var:

存储在DOCUMENT_ROOT外
使用PHPINFO()不可见
– (非常糟糕)包含所有已定义的ini变量,因此每个vhost都可以通过(ini_get_all)查询它们,因此无法在共享vhost环境中使用

只要* .ini和SetEnv在Web根目录(文档根目录)之外,无论哪种方式都无关紧要.只需选择您喜欢的任何一种.我喜欢SetEnv,但这只是个人喜好.因为变量被放入_SERVER,所以使用SetEnv对我来说更有意义.使用.ini,我认为将它留给特定于代码工作方式的初始化设置更有意义.

不存储在文档根目录下是一个好主意,以防止访问可能安全的数据.

请注意,PHPinfo()将列出所有已设置的服务器变量,因此请务必小心.

最后,如果您要包含文件,请确保您不允许用户以某种方式设置无偿的../../,否则他们将可以访问可能安全的文件(甚至包括/ etc / passwd!)

我认为你的主要问题是“多么安全”.嗯,这可能就像你能得到的那样安全而不会引起严重的麻烦. PHP代码可以访问这些变量,因此如果您将它们打印出来,它们很容易看到,因此它取决于您的代码库的安全性.有可能将LDAP与MysqL一起使用,但这听起来很痛苦.

猜你在找的PHP相关文章