2012-03-22 52 views
1

有沒有辦法在登出後「禁用」瀏覽器的後退按鈕?asp.net:登錄後有沒有辦法「禁用」瀏覽器的後退按鈕?

我讀了幾篇文章,現在我知道,我可以禁用緩存。 (例如ASP.NET authentication login and logout with browser back button

這是工作,但我想禁用出於安全原因返回按鈕註銷(=時,有沒有可用的會話了)後只。

如果我禁用緩存,用戶不能使用瀏覽器的後退按鈕同時登錄。

我使用一個自定義的驗證,而不是asp.net

的標準是否有安全(=沒有JavaScript)可能性做到這一點?

回答

2

由於我確定您已經知道,您無法直接禁用瀏覽器上的「返回」按鈕。

防止用戶回頭的唯一方法依賴於將頁面設置爲緩存或涉及使用JavaScript。基於這些都不適合你的事實,沒有解決方案來管理這一點。我查看了多年來的許多文章,並重新搜索了幾次,所有建議都使用客戶端腳本或緩存。

我的建議是在你的情況下使用緩存禁用方法,並看看你的用戶界面如何迴應「後退」按鈕,看看你是否可以對設計進行更改以使其更平滑。這可能涉及檢查會話變量,或檢查用戶是否仍然通過身份驗證,但根據您的要求,我相信您運氣不佳。

總之,你將需要選擇兩個邪惡中的較小者。

  • 使用頁面緩存將確保人們無法使用「後退」按鈕,在所有不使用JavaScript - 大概是更好的安全性
  • 使用JavaScript來刪除註銷頁面的歷史將允許您以防止用戶從退出後返回,但有人開啓了noscript,或者有人惡意可以禁用您的控制。

你沒有詳細說明你想保護誰,但是如果我猜對了,而且你擔心用戶在註銷後離開他們的電腦,但沒有關閉瀏覽器窗口,那麼Javascript真的是一個問題嗎?

思考一下,這樣做的人的類型是不考慮如何惡意使用信息。大概是惡意的人,已經「像壞人一樣思考」,並且知道足以關閉瀏覽器窗口。

任何一個選項都可以通過攔截/改變http頭,javascript等的惡意軟件繞過,所以兩者都不是100%有效。我看到的唯一區別是,javascript選項可以通過改變html在線路上傳輸(使用Fiddler或惡意軟件等)並通過簡單地禁用Javascript來打破。所以頁面緩存選項爲稍微有點更好的安全目的。

使用HTTPS,而不是普通的HTTP與頭的方法組合提供了更多的保護,使其更有效,因爲它大大增加了跨線操縱數據的困難,它不是禁用只需禁用JavaScript即可。

無論哪種方式,我認爲你需要衡量你的選擇,並選擇其中一個。看起來很傷心,我們只能做很多事情來保護用戶不受他們自己的傷害。

0

放棄註銷會話的方法&檢查您的數據或儀表板頁面上的Session!= null,然後我認爲不需要禁用Back按鈕。

+0

這是行不通的。該頁面仍然保存在瀏覽器歷史記錄中,即客戶端,因此如果頁面緩存未設置,您仍然可以回到該頁面。 – David 2012-03-22 13:32:20

2

任何在瀏覽器上運行的東西都可以被攔截和/或禁用。發送到客戶端的任何頁面都可以保存:任何鏈接URL,內容,JavaScript等

如果您允許我在我的機器上的瀏覽器中加載網頁,我可以查看並保存每個頁面的源代碼我明白了,並捕獲了與服務器之間的每一條通信。如果你想HTML渲染或JavaScript在我的機器上運行,我會看到它,並永遠保持它,如果我想。

您可以通過只允許通過遠程連接訪問應用程序的受控機器來訪問您的應用程序來控制此功能,但對於消費者應用程序來說,這可能是禁止的。

你可以然而,鼓勵大多數用戶使用這樣的事情

function logout(){ 
    window.open(loggedOutPageURL) 
    self.close() 
} 

惡意用戶不會有任何問題禁用該JavaScript,或者他接受它只是將內容保存,但是這可能是最好的,你可以做。

+1

+1對於用戶能夠保存/打印頁面的好處。我不確定,但我敢打賭,他更擔心使用公共P​​C的用戶,並且無法關閉瀏覽器窗口而不是打印信息。惡意用戶打印/保存/篡改信息必須首先登錄。他聽起來像是在試圖阻止任何人在註銷後回到受保護的頁面。我認爲他想要保護的人的類型的示例:圖書館中的某人離開電腦而沒有註銷/關閉瀏覽器等。 – David 2012-03-22 13:29:54

+0

你是對的@DavidStratton 但是這聽起來好像沒有解決這個安全問題的方法?我已經看到了一個完全是我的問題的信用卡銀行頁面。用戶已經註銷,但下一個用戶(在公共電腦上)可以導航並讀取信息:\。 如果沒有解決方案,那麼Slothsberrys的解決方案聽起來不錯。 – 2012-03-22 13:37:01

+1

公平點。當涉及到安全問題時,有些事情可以被認爲是最糟糕的,但是你對這個問題的閱讀似乎是合理的。在這種情況下,不依賴客戶端代碼的限制似乎很奇怪。 – 2012-03-22 13:40:33

0

下面寫註銷按鈕的腳本:

<script language="text/javascript"> 

window.history.forward(1); 

</script> 
相關問題