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

时间:2013-02-27 15:51:22

标签: php wordpress binary download ascii

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

  • 问题在5天前突然开始,之前已经工作了大约3个月

  • 当客户通过下载链接下载购买时,所有.epub文件都会损坏,而Adobe Digital Editions在尝试将ePub导入库时会出错

  • 所有.mobi文件在下载后损坏,然后加载到Kindle上,Kindle会出现类似的错误

  • 我们尝试关闭Google网址缩短功能,错误

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

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

我们学到了什么:

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

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

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

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

  • 在/home/foo/bar/wp-content/plugins/wp-cart-for-digital-products/download.php中我们看到标题(“Content-Transfer-Encoding:binary”);所以我们假设在使用加密链接时强制使用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

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

非常感谢

1 个答案:

答案 0 :(得分:0)

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

UTF-8 BOM signature in PHP files

WordPress中的代码行'functions.php:if ($bom != b"\xEF\xBB\xBF")

我们的罪魁祸首HTML字符代码ï°¿,我们根据HEX值解码:EF BB BF 那是在破坏的.epub文件的开头出现的垃圾数据。

每次在WordPress中运行时,

functions.php总是输出这个垃圾数据。

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

和平& amp;快乐的编码给你