#眉標=Ajax #副標=Ajax網頁開發利器(3) #大標=Ajax Control Toolkit網頁安全控管 #作者=文/王寧疆 ==程式1 =========== protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) //如果網頁不是第一次執行 { NoBotState state; //宣告用來存放錯誤狀態的變數 if (NoBot1.IsValid(out state)) //呼叫NoBot控制項的IsValid方法,判斷是否為網頁機器人程式在使 //用網頁,並將判斷的結果存放到型態為NoBotState的state變數中 { lbCreateStatus.Text = "你的資訊已經被提交!"; //如果不是網頁機器人在使用網頁的功能,則 //在Label控制項中顯示帳號申請成功的訊息 } else //如果是網頁機器人在使用網頁的功能 { bCancelCreate = true;//將bCancelCreate變數的內容值設定為true,表示要取消建立帳號的動作 switch (state) //判斷state變數的狀態 { case NoBotState.InvalidAddressTooActive; //如果內容值為 //NoBotState.InvalidAddressTooActive lbCreateStatus.Text = "該IP位址在短時間內提交了過多的請求。";//顯示錯誤訊息 break; } } } } ================ ==程式2 =========== protected void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e) { e.Cancel = bCancelCreate; //依據bCancelCreate變數的內容值決定是否要命令CreateUserWizard //控制項取消建立網頁使用者帳號的動作 } ================ ==程式3 =========== protected void NoBot1_GenerateChallengeResponse(object sender, NoBotEventArgs e) { Panel p = new Panel(); //建立Panel控制項物件 p.ID = "NoBotSamplePanel"; //設定Panel控制項物件的ID屬性 Random rand = new Random(); //建立Random類別的物件 p.Width = rand.Next(300); //產生介於1~300間的數字當做Panel控制項物件的寬度 p.Height = rand.Next(200); //產生介於1~200間的數字當做Panel控制項物件的高度 p.Style.Add(HtmlTextWriterStyle.Visibility, "hidden"); //將Panel控制項物件的Visibility屬性 //的內容值設定為hidden p.Style.Add(HtmlTextWriterStyle.Position, "absolute"); //將Panel控制項物件的Position屬性 //的內容值設定為absolute ((NoBot) sender).Controls.Add(p); //將建立好的Panel控制項物件加入到NoBot控制項的Controls集合中 e.ChallengeScript = string.Format("var e = document.getElementById('{0}'); e.offsetWidth* e.offsetHeight;", p.ClientID); //計算網頁中Panel控制項物件的寬度和高度相乘的結果 e.RequiredResponse = (p.Width.Value * p.Height.Value).ToString(); //計算剛剛建立的Panel物件的寬度和高度相乘的結果 //如果兩者不相等,則使用網頁功能的是機器人程式 } ================ ==程式4 =========== ASP.NET ADO.NET C# Visual Basic .NET Visual C++ SharePoint Server 2007 Visual Studio 2005 Team System Reporting Service ASP.NET Ajax Extension Enterprise Library ================ ==程式5 =========== ================