網頁中怎樣禁止通過輸入url直接訪問?

是這樣 ,怎樣在網頁中做判斷,判斷客戶端是通過鏈接過來的還是直接輸入網址訪問的網頁?怎樣禁止通過輸入url直接訪問?


伺服器端判斷一下 HTTP 請求的 Referer 頭,不對就直接不出正常結果咯。


瀉藥

能說沒(完美)辦法么……

大不了你判斷 referer 唄……

沒這個就是直接訪問的

雖然說不準吧……

或者你用動態鏈接

一次生成一個唯一地址(或者get參數token啥的)

訪問後失效


我想到的辦法大概有兩種

1、比較低級,容易被破解的。校驗HTTP頭裡的referer值

2、在前一個頁面為這個頁面生成一個帶時效的code,訪問這個頁面的時候帶上這個code,然後校驗這個code


來源站用GUID 標識 ,進來就失效,然後寫入加密 Cookie / Session 之類的,

直接輸入網址 或 GUID失效 直接 Kill 掉。


簡單 把網址做成一次性的 每次訪問都不同 例如用guid做地址,這樣就沒人能直接通過URL訪問了。


//&標籤開始的第一行
If (document.referrer==="") {
document.open();
document.write("&Please do not directly visit this site&");
document.close();
}


今天 面試就被問到了這個問題 我說了 http請求頭欄位中的 refer 還有session 以及session id


樓上的同學,弱弱的問下,我 把網頁放到web-inf文件夾下,不就隱藏了???


驗證Referer。

(缺陷:可偽裝)

每次要求訪問方攜帶帶有時效性的動態密鑰。服務方每次解密驗證密鑰有效時效有效即可訪問。

(缺陷:根據網路情況不同,理論上如果在時效範圍內被破解,偽裝也是可能的)


都是防君子, 不防小人的...不管你用什麼方法都可以破解, 最簡單的方法就是判斷Referer, 能擋住一波小白就好了...


session 啦,單純的HTML不好驗證。


推薦閱讀:

手機網遊前端和後端都用什麼語言開發?
學習前端好睏惑,不適合前端嗎?
在面試中,怎樣能通俗易懂又不白痴的回答出面試官提出的js中閉包問題?
不清楚到底是怎麼基於ES6模塊 進行模塊靜態分析的??
angularJS1.X學到一半發現2.0的存在,要不要繼續1.X?

TAG:網頁設計師 | 前端開發 | HTML | HTML解析 |