頁框式ASP.NET的Login相關修正

出自ProgWiki

跳轉到: 導航, 搜尋

目錄

用途

相關修正檔案

Login.aspx

<head runat="server">
    <title>登入用頁面</title>
	<script type="text/javascript">
	//<![CDATA[
    if (top.location != location)
      top.location.href = location.href;
	//]]>
	</script>
</head>

Login.aspx.cs

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
	string strReturnUrl = this.Request.QueryString["ReturnUrl"];
	if (strReturnUrl != null)
	{
		this.Session["ReturnUrl"] = strReturnUrl;
		this.Response.Redirect("Login.aspx");
		return;
	}
 
        // 其他略
 
    }   //end of Page_Load()
}

index.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>首頁</title>
    <%	string strUrl = this.Session["ReturnUrl"] as string;
		if (string.IsNullOrEmpty(strUrl))
			this.Session["ReturnUrl"] = "copy_right.aspx";
    %>
</head>
        <frameset cols = "156,*"  framespacing="1" border="1" frameborder="0">
          <frame src ="menu.aspx"  />
          <frame src ='<%=this.Session["ReturnUrl"].ToString()%>' name="MainFrame" /> 
        </frameset>
</html>

OtherPage.aspx.cs

public partial class OtherPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //檢查是否經過登入成功
        if (!User.Identity.IsAuthenticated)
        {
        	this.Session["ReturnUrl"] = this.Request.RawUrl;
                FormsAuthentication.RedirectToLoginPage();
                return;
        }
 
        // 其他略
 
    }   //end of Page_Load()
}

注意事項

 ValidateRequest="false"

以便能讓IIS針對頁面的GET模式傳入值,進行XSS的安全性篩選。
如有類似下列的傳入參數將使IIS彈出錯誤而終止該User遊覽的網頁,以策安全。
 http://www.example.com/Login.aspx?ReturnUrl=<script>alert('XSS')</script>
執行階段錯誤
 
描述: 伺服器上發生應用程式錯誤。此應用程式的目前自訂錯誤設定因安全性考量,防止他人從遠端看見應用程式錯誤的詳細資訊。然而,可以使用本機伺服器電腦上的瀏覽器檢視。
應用程式中發生伺服器錯誤。
 
具有潛在危險 Request.QueryString 的值已從用戶端 (ReturnUrl="<script>alert('XSS')...") 偵測到。 
描述: 要求驗證偵測到具有潛在危險的用戶端輸入值,對這個要求的處理已經中止。這個值可能表示有人嘗試危害應用程式的安全性,例如跨站台的指令碼處理攻擊。您可以在 Page 指示詞或 組態區段中設定 validateRequest=false 來停用要求驗證。但是我們強烈建議您的應用程式應該明確地檢查所有這類的輸入。 
 
例外詳細資訊: System.Web.HttpRequestValidationException: 具有潛在危險 Request.QueryString 的值已從用戶端 (ReturnUrl="<script>alert('XSS')...") 偵測到。
個人工具
名字空間
變換
動作
導航
分類
其他
技術類News或部落格
工具箱