Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这样做安全吗?_Php_Download_Xor - Fatal编程技术网

Php 这样做安全吗?

Php 这样做安全吗?,php,download,xor,Php,Download,Xor,先编码,然后解释: <?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['

先编码,然后解释:

<?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;
?>

这允许我通过表单(动态生成)发布数据,并将发布的数据作为文件下载

我使用一种非常基本的XOR加密,将(固定长度,32字节)密钥放在文件的开头。其目的不是保护数据,而是混淆数据

拥有这样一个文件意味着可能任何人都可以发布他们想要的任何数据,并将其作为下载提供给用户的计算机,但我相信用户必须接受下载,并且数据通过XOR一次性密钥传递,这两者的结合足以防止恶意使用


有什么理由我不应该使用这样的文件吗?除了我正在做的事情,还有更好的选择吗?
application/octet-stream
是合适的MIME类型吗?

从用户的角度来看,它是完全安全的,因为用户伤害自己是没有意义的,POST不能通过潜在的恶意url或重定向传递。即使可以,也只有一个脚本返回一个要下载的文件。从定义上讲,这不会伤害任何人

但您应该记住,在您将数据发送给用户之后,如果您接受数据以某种方式进行除臭和使用,则永远不能信任该数据

应用程序/八位字节流是适当的MIME类型吗


只要您返回二进制数据-是的,这是适当的

这有什么用?如果所有这些只是将用户发布的数据返回给用户,那么“恶意使用”的机会是什么?将要下载的数据传递到文件中。目前唯一的用法是将localStorage的内容下载为文件,这样用户就可以保存它,用于备份(例如,在清除浏览器文件之前)、更改浏览器,甚至完全更改计算机。您的目标是什么?要生成大小可变的文件,请更改标题。在主页上看到它的人并不清楚。@Ktash:“为什么”什么?它是安全的,因为它是安全的。用户伤害自己是没有意义的,至少“用户伤害自己是没有意义的”这句话会有帮助。如前所述,它对任何事情都没有信心。这只是一句“用于不同目的的URL”——op使用的是
$\u POST
,而不是
$\u GET
。你不能通过链接或重定向传递帖子数据是的,我把它删掉了。回头看代码。仍然可能,但肯定不容易。您可以通过自动提交表单传递帖子数据。我只允许用户通过其他方式(在本例中,通过浏览器控制台)访问他们已经访问过的数据。