2013-05-08 61 views
3

我們有一個可公開訪問的Web應用程序。 當用戶登錄時,他填寫他的個人信息。管理共享計算機和信息亭上的Web應用程序安全

問題 用戶可能忘記關閉瀏覽器在一個信息亭或共享環境,可能允許其他用戶看到他的個人信息。

我們正在使用的5分鐘的會話超時,

我的思想 是更好地建立信息亭環境的單獨的應用程序,我可以要求用戶這是一個共享計算機或公共。如果是,我將如何進一步實施?

對於每3分鐘不活動,我們要提示用戶:「你想繼續嗎?」如果是,請確認密碼,以便更安全。

我已經看到了下面的鏈接 Security considerations for an ASP.Net web application that will be used on a public computer or kiosk

可否請你分享這方面的更多想法:如何使它更安全。

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-05-08 05:37:11

+0

@JohnSaunders:我需要你的[幫助](http://meta.stackexchange.com/questions/179364/will-tags-in-title-be-passhibited-programmatically-ever):) – abatishchev 2013-05-08 05:40:14

+3

我不這麼認爲問題適用於SO。這不是一個真正的具體的編程問題,而是一個模糊的民意調查設計建議。似乎你真正需要的是更詳細地敲定安全要求。重點關注如何實施這些要求,並詢問在此過程中遇到的問題。 – millimoose 2013-05-13 15:02:58

回答

1

您將不得不使用某種JavaScript。如果沒有某種客戶端腳本(顯然是JavaScript)來處理請求,服務器就無法更新客戶端Web頁面。我做了類似的事情,詢問用戶是否想通過顯示彈出消息來保持會話的活動狀態。但在你的情況下,你應該創建一個DNN頁面重新登錄,並添加一個自定義模塊或HTML塊,其中包含一個簡單的JavaScript到你想檢查登錄的每個頁面(或放在你的模板頁眉或頁腳中)將用戶重定向到重新登錄屏幕。例如:

function setHeartbeat() { 
    setTimeout("heartbeat()", 300000); // every 5 min 
} 

function heartbeat() { 
    window.location.href = "Relogin.aspx?LastPage=" + window.location.href; 
} 

然後Relogin.aspx將在頂部有一條消息,表示用戶空閒3分鐘,並提供密碼框。用戶登錄後,您可以將它們重定向回LastPage(自從我使用DNN以來,它一直都很流行,但我認爲有一種方法可以對URL進行格式化,以便自動重定向)。

更方便用戶的選項是在3分鐘後顯示一個彈出窗口,並顯示帶有OK按鈕的消息和密碼字段。

<div id="confirmSession" style="display: none"> 
<p class="message" style="display: none;"></p> 
<p>You have been idle for 3 minutes, if you want to continue your session please re-enter your password.</p> 
<p>Password: <input type="password" id="password" /></p> 
<input type="button" id="btnContinueSession" /> 
<input type="hidden" id="userName" value='<%# HttpContext.Current.User.Principal.Identity %>' /> 
</div> 

和下面的JavaScript:同樣,這可以用jQuery的,那就是你有像做

function setHeartbeat() { 
    setTimeout("heartbeat()", 300000); // every 5 min 
} 

function heartbeat() { 
    $("#confirmSession").show(); 
} 

$("#btnContinueSession").click(function() { 
    $.ajax({ 
    type: "post", 
    url: "/relogin.aspx", 

    error: function(returnval) { 
     // Login failed for some reason, typically page not available 404 error, or code threw an error. so have the user try again. 
     $(".message").text(returnval + " failure"); 
     $(".message").show(); 
    }, 
    success: function (returnval) { 
     $("#confirmSession").hide(); 
     setHeartbeat(); 
    } 
    }); 
}); 

在這裏,你必須創建一個relogin.aspx頁面或一些其他服務它將接收用戶名和密碼,重新驗證用戶,如果密碼無效(在上面的jQuery中捕獲並向用戶顯示),則會拋出錯誤。這顯然需要更多工作,並且需要自定義編碼進行驗證,而不是簡單地重定向到登錄屏幕,但它更加便於用戶使用。

在此Ajax方法中,值得注意的是,您的服務器會話超時時間可能不得不超過3分鐘。如果三分鐘或更短時間,並且用戶輸入密碼,則它們已經從服務器註銷,並且您將收到無效的身份驗證錯誤。因此整體重定向到登錄頁面可能是最有意義的。但是,如果用戶輸入的數據保存在cookie中或以某種方式保存,那麼您需要確保這些數據可以重新填充(我聽說有數百人感到沮喪,他們的數據「丟失了」 「)。

例子我從的有:

+0

感謝您的寶貴意見,這可以幫助我,還有一個問題是每個頁面上的瀏覽器後退按鈕單擊我必須創建一個自定義頁面過期頁面,我的疑問是我會在哪裏寫這個代碼,,我應該寫在每個模塊,因爲dotnetnuke沒有母版頁。在這個自定義頁面上,我將有一個鏈接,將他重定向到登錄頁面 – user804401 2013-05-18 05:50:01

+0

對於這個自助服務終端,我建議禁用右鍵單擊菜單並且根本不顯示瀏覽器欄,所以對於這個人來說很難回去。這就是說,我建議你使用一個jQuery插件,並將其放在每個頁面上包含的JavaScript文件中(因此,將JavaScript包含在頂部導航欄中,以便它在網站上無處不在)。 – tlbignerd 2013-05-18 15:59:24

+0

看看這個StackOverflow文章的一些想法如何重寫後退按鈕:http://stackoverflow.com/questions/1844491/intercepting-call-to-the-back-button-in-my-ajax-application-i -dont想學就到 – tlbignerd 2013-05-18 16:06:22

相關問題