0

我正在寻找将应用程序的图像存储在 MSSQL 数据库中。(我知道关于这个或文件系统存储是否更好存在一些争论;不过那是另一个线程。)我正在考虑做类似于http://forum.codecall.net/topic/40286-tutorial-storing的事情-images-in-mysql-with-php/但在 CodeIgniter 中,类似以下内容:

foreach ($_FILES as $upload_name => $info) {
    if ($info['name']) {
        // Temporary file name stored on the server
        $tmpName  = $info['tmp_name'];  

        // Read the file 
        $fp      = fopen($tmpName, 'r');
        $data = fread($fp, filesize($tmpName));
        fclose($fp);

        //model code consolidated here for ease of question-asking
        $db = $this->load->database();
        $stmt = $db->insert('my_table', array('image' => $data));
    }
}

我的问题主要是关于安全的。基本上,对于清理图像二进制数据插入与其他类型的字符串数据,我应该有什么特别的担忧吗?我从上面链接的站点中取出了代码中的 addlashes(),因为我知道 CI 的活动记录会自行进行一些清理,但我不知道拥有它是否更好(或完全做一些其他准备工作)。

4

1 回答 1

2

如果我正确理解了您的问题,您不必担心它,只要您将 file_type(文件的 Mime 类型)与它一起存储,并将 Mime 类型与二进制数据一起存储。然后,每当您处理数据时,请确保将其与正确的 Mime 类型一起使用,这样即使他们上传了病毒脚本,您也可以确保它仅呈现为图像,而不是让您的服务器或浏览器处理它。

除此之外,我认为您不需要将上传文件拉入内存并尝试清理它。

于 2013-02-12T23:14:22.817 回答