iT邦幫忙

0

網站檔案權限控管

各位好:
小弟有一個網站需要控管user是否能夠存取檔案(都是影像檔)
網站後端是PHP7.4
目前是將image base64encode後存進資料庫(MySQL)並記錄檔案是由哪一個user產生的,限制只能由那一個user存取
存base64的表如下:

CREATE TABLE `user_file` (
	`file_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
	`user_id` BIGINT(20) UNSIGNED NOT NULL,
	`file_name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`file_data` LONGTEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`file_id`) USING BTREE,
	INDEX `user_id` (`user_id`) USING BTREE,
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB

但發現這個做法效能低落,想請問各位是否有更好的方法做到檔案權限控制

1 個回答

5
浩瀚星空
iT邦超人 1 級 ‧ 2020-11-16 11:15:21
最佳解答

不要將檔案資料存入資料庫,很可怕的。你的又是影像檔。這更可怕了。
基本最好還是將實際檔案放到一個路徑上。如果怕被人家讀取到。
可以放到web目錄外。再交由readfile這個函數來幫你處理。

資料庫就存對應的user、權限跟路徑就好。
你可以參考一下檔案管理的程式碼來做。

將檔案資料存到資料庫內是一件很可怕的事。就算真的要存。也請改成bin欄位格式來處理。

Franky Chen iT邦研究生 4 級 ‧ 2020-11-16 11:16:27 檢舉

好的感謝大大,我有方向了!

我要發表回答

立即登入回答