На моем сайте есть форма для загрузки. На самом деле я не включаю и не исключаю типы файлов.Загрузка веб-сайта предотвращает взлом
Вместо этого я использую это:
$fileUploadName = $target_dir.md5(uniqid($target_file.rand(),true)).".".$imageFileType;
Это будет держать тип файла, но изменить имя файла для некоторых случайных загадочного как 790cd5a974bf570ff6a303c3dc5be90f
.
Таким образом, хакер не может загрузить файл hack.php
и открыть его с помощью www.example.com/uploaded_files/hack.php
, так как он изменился, например. 790cd5a974bf570ff6a303c3dc5be90f.php
. На мой взгляд, это абсолютно безопасно. Правильно ли, что это безопасно?
Я думаю, что проблемой может быть только сам исполняемый файл. Существуют ли самоисполняющиеся файлы?
Применив [Принцип Керкхофф] (https://en.wikipedia.org/wiki/Kerckhoffs 's_principle) "злоумышленник знает все о системе, кроме ключа (криптографического), ваш злоумышленник может знать, что вы используете контрольную сумму MD5 имени файла и, следовательно, можете вывести имя загруженного файла. –
Почему, при любых обстоятельствах, разрешаете ли вы выполнять загрузку файлов? – miken32
@ miken32 Я не понимаю, что вы имеете в виду. Конечно, я хочу, чтобы хакер мог загрузить файл, а потом искупить. Чтобы этого избежать, я изменяю имя реального файла в чем-то загадочном с помощью md5 (uniqid ($ filename)). Таким образом, я надеюсь, что хакер не может вызывать и экспроксимировать файл через браузер, потому что он не знает имя (фактического) файла. Это, конечно, не сработает, если это файл самозавершения. Но делай. файлы самоисполнения даже существуют? – David