首先是代码,然后是解释:
<?php
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$_POST['filename']."\"");
$key = md5(rand());
echo $key;
$key = str_repeat($key,ceil(strlen($_POST['data'])/32));
echo $_POST['data'] ^ $key;
?>
这样做是允许我通过表单(动态生成)POST
数据,并将发布的数据作为文件下载。
我正在使用非常基本的XOR加密,将(固定长度,32字节)密钥放在文件的开头。目的不是为了保护数据,而是为了对其进行模糊处理。
拥有这样一个文件意味着可能有人可以发布他们想要的任何数据,并将其作为下载提供给用户的计算机,但我相信用户必须接受下载和数据的组合通过一次性密钥传递XOR,足以防止恶意使用。
我有什么理由不使用这样的文件吗?有没有比我正在做的更好的选择? application/octet-stream
是否为适当的MIME类型?
答案 0 :(得分:1)
从用户的角度来看,这是完全安全的 - 因为用户无法自我伤害,并且POST无法通过潜在的恶意URL或重定向传递。即使它可以 - 只有一个脚本返回要下载的文件。根据定义,这不会伤害任何人。
但是您应该记住,在您将其发送给用户之后 - 如果您接受数据进行反混淆并以某种方式使用,您将永远不会信任该数据。
application / octet-stream是否是适当的MIME类型
只要你返回二进制数据 - 是的,这是合适的