簡體   English   中英

如何保護免受PHP中的文件上傳攻擊?

[英]How to protect from file upload attack in php?

我有如下文件上傳腳本(upload.php)。 如我所料,有人可以編寫腳本,在短時間內將1000多個文件發送到upload.php。

那么,如何保護自己免受眾多文件上傳攻擊?

<?php
    if (!empty($_FILES)) {   
        $ds = DIRECTORY_SEPARATOR;
        $storeFolder = 'uploads';

        $rand_dir = rand(1, 1000);
        $targetPath = realpath(dirname(__FILE__) . '/..') . $ds . $storeFolder . $ds . $rand_dir . $ds;
        $targetPath_clean = $storeFolder . $ds . $rand_dir . $ds;

        if (!file_exists($targetPath))
            mkdir($targetPath, 0777, true);

        $filename = date('YmdHis_') . generateRandomString() . '.' . pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

        move_uploaded_file($_FILES['file']['tmp_name'], $targetPath . $filename);
        echo $targetPath_clean . $filename;
    } else {
        die('access denied');
    }
?>

這主要取決於您要實現的目標。

如果表單是匿名的,則可以使用某種形式的capatcha或限制從一台主機上載文件(例如,將給定IP保存在數據庫中,並限制其上載更多文件的能力)。 如果腳本需要用戶授權,則可以通過指定的登錄名限制文件上傳。

請提供更多詳細信息,您的業務邏輯是什么,以便我們為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM