新聞動態

                                                                                  位置:首頁 新聞動態 常見問題

                                                                                  thinkphp6防止圖片被調用

                                                                                  新聞動態
                                                                                  2023年07月06日 閱讀:2629次

                                                                                  在ThinkPHP6中,可以使用URL簽名、防盜鏈等方法來防止圖片被非法調用。下面是一種簡單實現的方法:

                                                                                  1. 在config目錄下的app.php文件中,找到'url_common_param'參數,將其修改為如下形式:

                                                                                    'url_common_param' => true,

                                                                                    這樣會在URL中為每個生成的URL添加一個唯一的簽名參數。

                                                                                  2. 在控制器方法中生成圖片URL時,可以使用url函數生成帶簽名參數的URL,例如:

                                                                                    $imageUrl = url('index/index/image', ['id' => $id, 'sign' => true]);

                                                                                    這樣生成的URL會在末尾添加一個sign參數。

                                                                                  3. 在訪問圖片的控制器方法中,可以驗證簽名參數是否正確,如果不正確則返回錯誤信息或者直接輸出空白圖片。

                                                                                  例如,可以在Index控制器的image方法中進行驗證:

                                                                                  public function image($id, $sign)
                                                                                  {
                                                                                      // 根據$id獲取圖片路徑等相關信息
                                                                                  
                                                                                      // 根據生成的sign驗證是否合法
                                                                                      if (!$this->checkSign($id, $sign)) {
                                                                                          // 非法訪問,返回錯誤信息或輸出空白圖片
                                                                                      }
                                                                                  
                                                                                      // 輸出圖片
                                                                                      // ...
                                                                                  }
                                                                                  
                                                                                  private function checkSign($id, $sign)
                                                                                  {
                                                                                      // 根據$id生成簽名
                                                                                      $validSign = md5($id . 'your_secret_key'); // your_secret_key需要替換成你自己的密鑰
                                                                                  
                                                                                      // 驗證簽名是否一致
                                                                                      return $sign === $validSign;
                                                                                  }

                                                                                  在checkSign方法中,根據自己的需求生成合法的簽名,然后與傳入的簽名進行比較,如果一致則代表請求合法,否則代表非法訪問。

                                                                                  通過以上步驟,就可以在ThinkPHP6中實現防止圖片被調用的功能。當有人直接訪問圖片URL時,會要求帶上正確的簽名參數,否則無法正常獲取到圖片。這樣可以在一定程度上保護圖片資源的安全。

                                                                                  上一篇

                                                                                  下一篇

                                                                                  亚洲中文字幕在线19页_99久久国产精品免费热7788_欧美专区日韩专区综合专区_小泽玛利亚一区_gogo999亚洲肉体艺术