通过加密链接下载时损坏的文件


Corrupted files when downloaded via encrypted link

我们的产品是电子书,通过http://www.tipsandtricks-hq.com/eStore插件为WordPress提供。epub和。mobi格式,生成加密下载链接。

  • 问题是5天前突然出现的,之前正常工作了大约三个月

  • 当客户通过下载链接下载他们的购买时,所有。ePub文件都会损坏,Adobe数字版本在尝试将ePub导入到库时给出错误

  • 所有。mobi文件在下载并加载到Kindle时都会损坏,Kindle给出类似的错误

  • 我们尝试关闭Google URL缩短器,错误

  • 我们已经测试了IE, Chrome和Firefox的链接,错误

  • 我们在没有加密链接的情况下进行了测试,通过在浏览器中直接链接下载文件,它们工作正常,没有错误

我们学到了什么:

  • 我们已经测试了使用FTP在ASCII和二进制模式下下载…使用ASCII,我们得到与使用加密下载链接相同的错误

  • 使用FTP传输的文件在使用ASCII和二进制后大小相同,但运行哈希检查显示内容不同

  • 我们正在使用FileZilla通过FTP在PC和Mac上测试,但是错误只发生在PC上

  • 所以,我们假设这个问题与文件传输类型和pc有关

  • 在/home/foo/bar/wp-content/plugins/wp-cart-for-digital-products/download.php中我们看到header("Content-Transfer-Encoding: binary");所以我们假设在使用加密链接

  • 时二进制是强制的

可能有一些字符在加密的链接字符串是强制ASCII?下面是一个加密链接的示例:

https://fu.com/bar/download.php?file=LRtro6WQMN12ip%2BEcL0TYS8sMZmSKOlkRedVCZyfACsqSllzCAjDp%2FZJyfQ2oq0ZP6vg1EMrR%2FOFC4B3wGDHl3N0u0sulcBhIfkOJ0C0UQh6

下面是http头文件:

Status: HTTP/1.1 200 OK
Date: Wed, 27 Feb 2013 14:55:47 GMT 
Server: Apache 
X-Powered-By: PHP/5.3.17 
Set-Cookie: PHPSESSID=7d61c9dd6ecbd321bea8cffg4a25d5e8; path=/ 
Expires: 0 
Cache-Control: public 
Pragma: public 
X-CF-Powered-By: WP 1.3.9 
Content-Description: File Transfer 
Content-Disposition: attachment; filename="Some-File-Name-Which-Was-Replaced.epub" 
Content-Transfer-Encoding: binary 
Content-Length: 5088032 
Connection: close 
Content-Type: application/epub+zip

还有什么可能导致这种情况?我们的服务器可以强制ASCII在。htaccess或apache配置设置?

非常感谢

我们的一个程序员在编辑器中使用了错误的字符编码。我们需要用UTF-8(BOM off)来处理PHP文件,否则空格或换行符会以某种方式干扰文件的完整性:

PHP文件中的UTF-8 BOM签名

WordPress' functions.php: if ($bom != b"'xEF'xBB'xBF")

我们的罪魁祸首HTML字符代码ï°¿,我们从十六进制值解码:EF BB BF这是出现在损坏的。epub文件开头的垃圾数据。

functions.php每次在WordPress中运行时总是输出这些垃圾数据。

很高兴我们终于找到了问题的根源,是我们疯了!哈haa ! !

和平和;祝你编码快乐