Это безопасная вещь? - PullRequest
0 голосов
/ 16 февраля 2012

Сначала код, затем объяснение:

<?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-тип?

1 Ответ

1 голос
/ 16 февраля 2012

Это абсолютно безопасно с точки зрения пользователя - потому что для пользователя нет смысла вредить себе, и POST не может быть передан потенциально вредоносным URL-адресом или перенаправлением.И даже если это возможно - есть только скрипт, который возвращает файл для загрузки.По определению это никому не может навредить.

Но вы должны иметь в виду, что после того, как вы отправили его пользователю - вы никогда не сможете доверять данным в случае, если вы принимаете данные для деобфускации и использования каким-либо образом.

Является ли application / octet-stream соответствующим MIME-типом

Пока вы возвращаете двоичные данные - да, это уместно

...