PHP使用cURL调用API时将授权令牌写在index.php是否安全?
结论:直接硬编码令牌到index.php不是安全的做法
正常情况下,只要你的服务器PHP解析功能运行正常,这个令牌不会通过用户端抓包泄漏:你代码中cURL请求是服务端向第三方API发起的,整个请求过程和用户的浏览器完全隔离,用户端只能拿到你最终渲染输出的商品名称数据,看不到PHP代码内的任何逻辑,也抓不到服务端和第三方API之间的请求内容。
存在的安全风险
- 如果服务器配置出错,PHP没有被正确解析,访问index.php时会直接返回完整源码,令牌会明文暴露给所有访问者
- 硬编码的令牌会跟随代码提交到Git等版本仓库,如果仓库权限管控不严,所有可访问仓库的人员都能拿到令牌
- 服务器被入侵时,硬编码在业务代码里的令牌会直接被攻击者获取,且所有部署环境共用同一令牌的情况下,泄漏后的影响范围更大
- 你当前示例中请求第三方API用的是HTTP协议,服务端向API发起请求的过程可能被中间节点抓包窃取令牌
优化方案
- 把令牌抽离到独立配置文件,比如新建
config.php,将令牌定义为常量:
<?php define('API_TOKEN', 'Bearer abcxyzabac*******'); ?>
将该配置文件放到Web根目录之外(不要放在www、public等可通过URL直接访问的目录下),在index.php中通过require_once '../config.php'的方式引入即可,就算服务器解析出现故障,用户也无法直接访问到根目录外的配置文件。
2. 在.gitignore中添加配置文件路径,不要将敏感配置提交到版本仓库。
3. 将第三方API的请求协议改为HTTPS,避免传输过程中被抓包窃取令牌。
4. 定期轮换API令牌,缩小令牌泄漏后的影响范围。
内容的提问来源于stack exchange,提问作者Ihtisham Khan
相关产品推荐
相关产品推荐

