看板 PHP 關於我們 聯絡資訊
※ [本文轉錄自 Web_Design 看板 #1ID7wJjc ] 作者: LaPass (LaPass) 看板: Web_Design 標題: [問題] 判斷HTTP_REFERER的來源形式 時間: Sat Sep 14 23:19:45 2013 就是.... 如果用戶端從別人連到我的網站 下面兩種形式 都會讓HTTP_REFERER中,出現對方的網站名稱 1.超連結 <a href='http://我的連結.jpg' >點我</a> <a href='http://我的連結.doc' >點我</a> 2.內鑲的播放軟體等 <img src='http://我的連結.jpg' > <embed src="http://我的連結.mp3" /> 我想只針對 <img>、<mp3>做處理 因為,如果是1那種狀況,我可以先吐個html檔 放些javascript進去做一些事 再把連結用location.replace()轉去該檔案的網址 使用者在使用上不會受到影響 但如果是2的狀況 如果我先吐html檔的話,圖片會當場掛掉,出現叉燒包 這不是我期望的結果 請問有沒有辦法區分這次點我的網站的連結是哪一種形式? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.123.105 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: LaPass (111.252.123.105), 時間: 09/14/2013 23:22:09 ※ 編輯: LaPass 來自: 111.252.123.105 (09/14 23:22)
danny8376:個人Server端是自己的 然後用的是nginx 09/14 23:52
danny8376:都直接寫conf去判斷referer 不和直接return 403 XDD 09/14 23:53
danny8376:要用PHP判定也可以 沒記錯你是用apache的server 09/14 23:53
danny8376:可以先把這些要防外連的網址全部用rewrite導到一個 09/14 23:55
danny8376:檢查的PHP頁面 在裡面檢查referer 不通過就丟403之類的 09/14 23:56
danny8376:檢查通過就發出sendfile的header 讓apache輸出檔案 09/14 23:57
danny8376:不過這得要apache有裝sendfile 沒有的話只能在PHP裡 09/14 23:59
danny8376:把檔案讀出來echo了 (也可以直接用readfile函式輸出) 09/15 00:01
danny8376:但能的話還是建議用sendfile 效率絕對遠比PHP直接輸出 09/15 00:02
danny8376:還要來得好的多 09/15 00:02
抱歉,我沒把問題說明清楚.... 舉個例子 http://f23ko.org/test.html 請檢視網頁原始碼,還有點那兩個連結看看 上面那個頁面裡面的兩張圖,看起來都是自己的網站下的沒錯 但那兩張圖其實都放在 imgur 然後這是 .htaccess RewriteEngine on RewriteRule ^img1\.jpg$ redirecti.html RewriteRule ^img2\.jpg$ http://i.imgur.com/ryfT3c5.jpg 這是 redirecti.html (頭尾略) <script> /*做一些有的沒的事情*/ window.location.replace("http://i.imgur.com/vRhaRdA.jpg") </script> 一般轉址是都用下面的 RewriteRule ^img2\.jpg$ http://i.imgur.com/ryfT3c5.jpg 這樣的形式 這樣不論是超連結或圖片,都能顯示的很正常 但如果是img1.jpg那樣,用javascript重新定向 可以在別人點超連結的時候 讓client端去執行一些有的沒的javascript 不過,這種狀況下用<img src='...'> 去讀圖片 圖片會讀不出來 所以,我在想能不能判斷這兩種不同的連結方式 如果是超連結,就用javascript去轉址 如果是圖片,就用PHP的header轉址過去 至於目的..... 其實我沒什麼特別的目的 只是覺得,趁著別人點網址的時候不知不覺的讓對方執行一些javascript 好像可以做一些有趣的事情,這樣 ※ 編輯: LaPass 來自: 111.252.123.105 (09/15 01:28)
danny8376:頂多對連結下手 而外加點參數 因為瀏覽器的 09/15 01:47
danny8376:request都是一樣的OwO 09/15 01:48
LaPass:orz.... 09/15 11:58
gpmm:是我沒看懂嗎? @@ 怎麼覺得針對檔案類型去做處理就好了? 09/15 20:30
kerash:他的意思是如果點連結進去就用script轉向,但是用html tag讀 09/15 21:27
kerash:如果出現其他非圖片header的輸出就會造成死圖,因此只能直 09/15 21:28
kerash:接讀取圖片資源後輸出 09/15 21:28
danny8376:不過說request都一樣這點... 其實實際上會有個小差異 09/16 01:25
danny8376:有時間先來確認一下不同瀏覽器的狀況 09/16 01:25
hit1205:我也以為都一樣耶 XD 原來其實有小差嗎 09/16 02:33
danny8376:是啊 不過這差異頗因瀏覽器而異啦 09/16 04:05
wotupset:要的話就直接埋原始碼到jpg裡頭 img貼圖不會處理js 09/16 07:07