gpt4 book ai didi

php - 从(PHP)流包装器错误消息中删除密码?

转载 作者:行者123 更新时间:2023-12-03 08:26:10 27 4
gpt4 key购买 nike

在生产服务器上,按照惯例,错误输出肯定是关闭的。不过,即使在开发人员屏幕上看到这样的错误消息时,我仍会感到不安:

stat(): stat failed for ftp://user:pass@127.0.0.1:21/dir-de-nada

这是在我围绕 ftp://流编写的类的上下文中。当然,PHP不能从任意位置过滤掉密码。但是在这种情况下(如URL包装程序和其他地方),密码的存在是显而易见的。

我已经发现了错误。但是我发现自己想知道是否需要自己将它们X删除,只是为了在所有情况下都安全起见, ,或者是否有办法让PHP自动和全局地执行此操作。 (这是这里的问题。)我猜不是,但是在这里扔探针没有害处。

至于我所担心的,它仅在我的开发屏幕上。但是,错误报告也与站点管理员等有关,他们可能不需要知道FTP密码。将FTP密码模糊处理到错误日志中并不是要担心的问题,但是对于将报告保存到数据库中等而言,由于明显的原因,我真的不希望这种信息传播到任何地方。请预防指针?

而且,如果有人想贡献有关注释的内容,以防止PHP在任何情况下模糊密码等敏感信息,那也欢迎。除了“不要在任何地方输出任何东西”。

编辑:更好的选项待定,我的错误和异常处理程序的消息部分现在运行以下命令:
$msg = preg_replace('#((ftp|http)://)([^@]+?)@#', '$1*:*@', $msg);

如果使用SSH2流,请在需要的情况下为 ssh2\.(shell|exec|sftp|scp)添加正则表达式。而且,如果您使用显示参数的堆栈跟踪记录,也要对其进行清理。

编辑2:关于使用PHP的FTP流上下文包装器的一般说明。
  • 特别是在有任何失败请求的情况下执行糟糕的操作,从而导致脚本重复超时。
  • 流回调(在create_stream_context/$param['notification']中定义)大部分记录为空白/部分,而不是来自FTP服务器的完整响应。
  • 使用流上下文的
  • 文件系统函数可能会或可能不会返回正确/一致的错误,或将任何内容记录到回调中。 (如果有人想对故障进行分解,请问一下。)
  • 似乎没有永久连接的选择:即使我回收了stream_context_create资源,PHP也会在同一脚本中为每个filesys调用重新登录。

  • 假设FTP流上下文适合一次性基本事务,但是对于尝试一次性执行更多操作的严重否定感觉有点不成熟。 Filesys功能的装备。下一个...

    最佳答案

    没有。

    我认为stream context中有一个使用户名和密码可配置的参数,但这是not an option

    您可以使用不使用URI(FTP或Curl)但确实意味着更多冗长代码的API来防止这种情况的发生。

    绝对必须在生产系统上禁用错误报告。但是启用自己的错误处理程序(在开发/测试以及生产中-具有特定于环境的功能)可提供额外的保护层。

    企图篡改输出流以控制错误消息的内容是无法启动的。但这在错误处理程序中肯定是个好主意。为什么在正则表达式中使用硬编码方案?

    #(([a-zA-Z]+)://)([^@]+?)@#

    关于php - 从(PHP)流包装器错误消息中删除密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40787034/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com