如果我使用'get_defined_vars()'获得大量的感知数据 - 这是一个安全漏洞吗?任何用户都可以以任何方式请求这些变量吗?

时间:2018-01-22 14:36:57

标签: php security

我正在开发一个已有10年历史的PHP网站,而不是在任何框架上运行。只是平坦的PHP脚本(旧式的方式,包括/需要其他文件)。

我一直在寻找一个变量来完成我正在使用函数编写的代码:get_defined_vars() - 并注意到页面上输出了大量的变量,包括用户名,密码和很多更多数据,如数据库凭据等。

用户是否可以通过打印/ echoed / var_dumped / request获取此数据? 或者这是否有义务,只有我,可以访问PHP文件的人 - 从服务器内部,然后使用然后我想要而不是愿意或不情愿地将它们显示给用户?

1 个答案:

答案 0 :(得分:1)

您应该仅使用此功能进行调试。我想不出有任何理由在现场代码中使用它。

  

用户是否可以获取此数据   印刷/呼应/ var_dumped /请求?

无法访问您的PHP文件或某些违规行为。

  

如果我使用'get_defined_vars()'获得了大量的感知数据 - 就是这样   安全漏洞? (用户名,密码和更多数据,如数据库凭证等)。

不一定是违规行为。但如果某个地方出现违规行为,可能很容易入侵。

如果你想提高安全性,我认为这个旧代码可能需要做很多工作:

  • 加密密码不应该在公共变量范围内
  • 纯文本密码永远不应该在任何地方,也不应该存在于任何应用程序中 - 即使在10岁的代码中也会完全失败
  • 如果您有时间,则封装您的组件(用户,数据库)
  • 在php.ini中保存设置并将PHP更新到最新版本(修复10年前代码的乐趣:-D)。这是一个改进PHP安全性的好教程:https://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html