網頁中怎樣禁止通過輸入url直接訪問?
01-21
是這樣 ,怎樣在網頁中做判斷,判斷客戶端是通過鏈接過來的還是直接輸入網址訪問的網頁?怎樣禁止通過輸入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?