[英]How to detect correct button when page is redirected for HTTP_REFERER
[英]HTTP_REFERER woes: How can I allow access to a specific page, only when a visitor has visited another specific page beforehand?
PHP新手在這里瘋狂地掙扎着如何在我糟糕的下載系統中實現基於HTTP_REFERER的安全功能。
基本上,我有它在我的文件下載頁面有一個特定的字符串附加到URL的末尾,這個特定的字符串是:
?thanks
如果在URL中可以看到,那么用戶將能夠下載位於其上的文件。 它的效果很好,但只需在URL本身上添加“?thanks”部分即可輕松“解鎖”頁面。 有效地允許用戶繞過我笨拙的安全性並輕松訪問我的高級文件。
如果可能的話,我想添加一個安全措施,任何試圖訪問包含以前沒有從包含'?pending'的頁面到達的字符串'?thanks'的頁面的人都被重定向到主頁。 這將為我提供完美的解決方案。
為清楚起見,典型的預下載過程如下:
啰嗦,是的,但對於我不尋常的要求來說,這將是非常理想的。 我也知道用戶可以通過首先在URL上附加'?pending'然后追加'?thanks'來解決這個問題,但它仍然真的,真的會有所幫助。
那么,StackOverflow,你們中的任何一個人都可以干嘛和善良的程序員幫助一個初出茅廬的網頁設計師嗎? 我感謝你的幫助。 干杯伙計們。
編輯:哦,這是一個失敗的方法,最后一次嘗試,但轟炸可怕,以防萬一它有助於進一步說明我的目標:
if (('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] == wp_get_shortlink().'?thanks') && (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote('?pending',"/")."/i",$_SERVER['HTTP_REFERER']))) {
echo 'Hurrah!';
} else {
echo 'Oh dear.';
}
如果這一切只取決於請求本身的信息 ,那么就沒有辦法強制執行你想要做的事情。 引用者也只是一個任意請求頭 。
你需要的是實際的服務器端狀態 。 為用戶打開一個會話,給出他正在經歷一個隨機唯一ID的過程,該ID在過程中的每個頁面上傳送,並保存會話中接下來要顯示的進度和消息。
沒有像“基於HTTP_REFERER的安全性”這樣的東西。 這是矛盾的。
為了安全起見,您必須使用SESSION。 在您的特定情況下,它似乎也是最合適的:只需在會話中存儲訪問任何頁面的事實,然后在其他任何頁面上檢查該值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.