何为敏感信息?简单点来说就是你不想让别人知道的信息,比如说数据库的地址,用户名,密码等等,此类信息往往知道的人越少越好。 通常,PHP程序里的配置文件大致如下所示: ?phpreturn array( 'database' = array( 'host' = '192.168.0.1', 'username' = 'ad
何为敏感信息?简单点来说就是你不想让别人知道的信息,比如说数据库的地址,用户名,密码等等,此类信息往往知道的人越少越好。
通常,PHP程序里的配置文件大致如下所示:
<?php return array( 'database' => array( 'host' => '192.168.0.1', 'username' => 'administrator', 'password' => 'e1bfd762321e409cee4ac0b6e841963c', ), ); ?>
有时候出于某些原因,比如说代码审查,亦或者合作开发等等,第三方需要获取代码版本仓库的读权限,一旦授权,数据库的地址,用户名,密码等敏感信息就暴露了。当然也可以不在代码版本仓库里保存配置文件,取而代之是撰写文档进行说明,但我不喜欢这样的方法,因为如此一来,代码本身是不完整的。
如何解决此类问题呢?最直接的方法是把敏感信息从代码中拿掉,换个地方保存。具体保存到哪里呢?有很多选择,比如说通过nginx的fastcgi_param来设置:
fastcgi_param DATABASE_HOST 192.168.0.1; fastcgi_param DATABASE_USERNAME administrator; fastcgi_param DATABASE_PASSWORD e1bfd762321e409cee4ac0b6e841963c;
经过这样的映射后,我们的代码就不会直接包含敏感信息了:
<?php return array( 'database' => array( 'host' => $_SERVER['DATABASE_HOST'], 'user' => $_SERVER['DATABASE_USERNAME'], 'password' => $_SERVER['DATABASE_PASSWORD'], ), ); ?>
此外,还可以通过php-fpm的env指令来设置:
env[DATABASE_HOST] = 192.168.0.1 env[DATABASE_USERNAME] = administrator env[DATABASE_PASSWORD] = e1bfd762321e409cee4ac0b6e841963c
需要说明的一点是,这个设置必须放在主配置文件php-fpm.conf里,不能放到include指令设置的子配置文件里,否则会报错:「Array are not allowed in the global section」;另外一点,虽然是通过env设置的,但结果还是在$_SERVER里,而不是$_ENV。
…
通过nginx和php-fpm配置文件来解决问题的话,有一个缺点,仅对Web有效,如果通过命令行来运行,那么无法在$_SERVER里获取相关信息,不过这不算什么难事儿,只要写个公共的脚本正则匹配一下nginx或者php-fpm的配置文件,就可以动态的把这些信息映射到命令行环境,具体怎么搞就留给大家自己操作吧。
…
说明:?@Laruence?提醒了我,如果配置信息通过nginx的fastcgi_param来设置的话,当nginx和php交互时,会带来大量的数据传输(如此看来通过php-fpm的env来设置相对更有优势),鸟哥建议使用独立的扩展来搞定,比如「hidef」。如果你使用hidef的话,需要注意一点,hidef定义的常量通过phpinfo函数可以一览无遗,为了安全性,你应该在配置文件php.ini里禁用相关函数:「disable_functions = phpinfo」。
…
看起来还是hidef可用性更好些,具体选择就看客观情况而定吧,如果能够安装扩展,那么就推荐使用hidef,否则就推荐使用env的方法。
原文地址:请注意PHP程序里的敏感信息, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具