【问题标题】:How to decode safely base64?如何安全地解码base64?
【发布时间】:2012-02-15 09:21:08
【问题描述】:

我在大 SQL 中有一些 base64 编码的文章。

我需要解码这些文章并回显它们。

我的问题是它们似乎是二进制的,这有点冒险,我在执行base64_decode() 后无法回应它们

如何将它们转换为安全文本?

编辑:似乎我不够清楚,

1) 对不起我的标题,英语是我的第二语言,我不知道如何问它,如果有人可以编辑,我会很感激。

2) 我不知道它是哪种二进制代码,我认为它与它在我的 MYSQL DB 中以LONGTEXT 格式存储的事实有关。我找到的唯一答案是n2lbr(),但它已经是一些html,所以我不希望一堆<br /> 弄乱我的东西。

我已经尝试过类似的东西:

preg_replace('#\n\r#', ' ' ,$data);
preg_replace('#\n#', ' ' ,$data);
preg_replace('#\r#', ' ' ,$data);
str_replace('\n\r', ' ' ,$data);

【问题讨论】:

  • 什么?有什么风险?你不能做任何事情只是回显文本。你能举一个“二进制”的例子吗?
  • 您的标题与问题不符。你知道如何解码它,你只是不知道如何打印它......
  • 如果它是二进制格式,那么回显它们可能是无用的,对吧?您可以安全地将它们作为 base64 回显,因为 base64 的目的之一是编码使用可打印字符。然而,这对我来说似乎也毫无意义。你不知道你的二进制代码是什么格式的吗?

标签: php binary base64


【解决方案1】:

解码后,您需要将它们输出到文件或具有正确 mime 类型的浏览器。如果您不知道 mime 类型,请使用 Fileinfo 命令查找 mime 类型:

$content = base64_decode($yourdata);
$finfo = new finfo;
$mimeType = $finfo->buffer($content, FILEINFO_MIME);

然后你可以使用mime类型根据文件数据向浏览器发送正确的header。

【讨论】:

    【解决方案2】:

    解码后,我认为 mb_detect_encoding() 将是一个很好的命令来查看它是否需要字符集转换(iconv 或 utf8_encode)。

    http://se2.php.net/manual/en/function.mb-detect-encoding.php

    如果可能,将您的 mysql 列转换为文本或 varchar,并在打开数据库连接时使用“set character set utf8”。

    【讨论】:

    • 编码有效,我一直收到真实的。
    • 我的错我的意思是 mb_detect_encoding
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多