thinkphp6防止圖片被調(diào)用
在ThinkPHP6中,可以使用URL簽名、防盜鏈等方法來防止圖片被非法調(diào)用。下面是一種簡單實(shí)現(xiàn)的方法:
在config目錄下的app.php文件中,找到'url_common_param'參數(shù),將其修改為如下形式:
'url_common_param' => true,
這樣會在URL中為每個(gè)生成的URL添加一個(gè)唯一的簽名參數(shù)。
在控制器方法中生成圖片URL時(shí),可以使用
url
函數(shù)生成帶簽名參數(shù)的URL,例如:$imageUrl = url('index/index/image', ['id' => $id, 'sign' => true]);
這樣生成的URL會在末尾添加一個(gè)
sign
參數(shù)。在訪問圖片的控制器方法中,可以驗(yàn)證簽名參數(shù)是否正確,如果不正確則返回錯誤信息或者直接輸出空白圖片。
例如,可以在Index控制器的image方法中進(jìn)行驗(yàn)證:
public function image($id, $sign) { // 根據(jù)$id獲取圖片路徑等相關(guān)信息 // 根據(jù)生成的sign驗(yàn)證是否合法 if (!$this->checkSign($id, $sign)) { // 非法訪問,返回錯誤信息或輸出空白圖片 } // 輸出圖片 // ... } private function checkSign($id, $sign) { // 根據(jù)$id生成簽名 $validSign = md5($id . 'your_secret_key'); // your_secret_key需要替換成你自己的密鑰 // 驗(yàn)證簽名是否一致 return $sign === $validSign; }
在checkSign方法中,根據(jù)自己的需求生成合法的簽名,然后與傳入的簽名進(jìn)行比較,如果一致則代表請求合法,否則代表非法訪問。
通過以上步驟,就可以在ThinkPHP6中實(shí)現(xiàn)防止圖片被調(diào)用的功能。當(dāng)有人直接訪問圖片URL時(shí),會要求帶上正確的簽名參數(shù),否則無法正常獲取到圖片。這樣可以在一定程度上保護(hù)圖片資源的安全。