成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

在ASP.NET中創建安全的web站點

瀏覽:217日期:2022-08-02 17:00:39
以前用ASP,PHP,JSP編寫網站代碼的時候,站點安全性總是一件頭疼的事情,雖然我們編寫了用戶登錄,注冊,驗證頁面,但是效果總是不理想。有時候我們不得不用大量的session變量來存放相關信息,處處設防。而在.NET環境下,這個問題處理起來就非常容易了。關鍵是要充分理解web.config文件。首先,介紹一下web.config文件。<?xml version="1.0" encoding="utf-8" ?><configuration><system.web><!-- 動態調試編譯設置 compilation debug="true" 以將調試符號(.pdb 信息)插入到編譯頁中。因為這將創建執行起來較慢的大文件,所以應該只在調試時將該值設置為 true,而所有其他時候都設置為false。有關更多信息,請參考有關調試 ASP.NET 文件的文檔。--><compilation defaultLanguage="vb" debug="true" /><!-- 自定義錯誤信息設置 customErrors mode="On" 或 "RemoteOnly" 以啟用自定義錯誤信息,或設置為 "Off" 以禁用自定義錯誤信息。為每個要處理的錯誤添加 <error> 標記。--><customErrors mode="RemoteOnly" /><!-- 身份驗證 此節設置應用程序的身份驗證策略。可能的模式是 /“Windows/”、/“Forms/”、/“Passport/”和 /“None/”--><authentication mode="Windows" /> <!-- 授權 此節設置應用程序的授權策略。可以允許或拒絕用戶或角色訪問應用程序資源。通配符:"*" 表示任何人,"?" 表示匿名 (未授權的)用戶。--><authorization><allow users="*" /> <!-- 允許所有用戶 --><!-- <allow users="[逗號分隔的用戶列表]"roles="[逗號分隔的角色列表]"/><deny users="[逗號分隔的用戶列表]"roles="[逗號分隔的角色列表]"/>--></authorization><!-- 應用程序級別跟蹤記錄應用程序級別跟蹤在應用程序內為每一頁啟用跟蹤日志輸出。設置 trace enabled="true" 以啟用應用程序跟蹤記錄。如果 pageOutput="true",則跟蹤信息將顯示在每一頁的底部。否則,可以通過從 Web 應用程序根瀏覽 "trace.axd" 頁來查看 應用程序跟蹤日志。--><trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /><!-- 會話狀態設置默認情況下,ASP.NET 使用 cookie 標識哪些請求屬于特定的會話。如果 cookie 不可用,則可以通過將會話標識符添加到 URL 來跟蹤會話。若要禁用 cookie,請設置 sessionState cookieless="true"。--><sessionState mode="InProc"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;user id=sa;password="cookieless="false" timeout="20" /><!-- 全球化此節設置應用程序的全球化設置。--><globalization requestEncoding="utf-8" responseEncoding="utf-8" /></system.web></configuration>好了,相信看過上面的介紹以后,對web.config文件一定非常了解了吧。下面我們就切入主題。為了防止用戶沒有經過驗證就訪問站點,我們的處理方法是當用戶沒有通過驗證的時候點擊任何頁面將會直接跳到Login.aspx頁面,具體代碼如下:<authentication mode="Forms"><forms name="yourAuthCookie" loginUrl="login.aspx"protection="All" path="/" /></authentication><authorization><deny users="?" /></authorization>但是這樣會產生一個問題,那就是如果我的站點有一些信息是可以讓任意用戶隨意訪問的,比如站點簡介,使用說明等。如果按照上面的處理方法豈不讓用戶覺得很麻煩,呵呵,不急,在ASP.NET中自然有相應的解決辦法。下面的代碼可以實現匿名用戶訪問Test.aspx頁面:<location path="test.aspx"><system.web><authorization><allow users="?" /></authorization></system.web></location>解決了上面兩個問題,相信大家心里一定有底了吧。下面就開始實現login.aspx頁面。利用C#和SQL Server2000,創建一個webform頁面,加入相應的控件。具體代碼如下:<%@ Page language="c#" Codebehind="login.aspx.cs"AutoEventWireup="false" Inherits="secure.login" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML><HEAD><title>Secure Site</title><meta content="Microsoft Visual Studio 7.0" name="GENERATOR"><meta content="C#" name="CODE_LANGUAGE"><meta content="JavaScript" name="vs_defaultClientScript"><meta content="http://schemas.microsoft.com/intellisense/ie5"name="vs_targetSchema"></HEAD><body MS_POSITIONING="GridLayout"><form id="login" method="post" runat="server"><table cellSpacing="0" cellPadding="0" border="0"><tr><td vAlign="top" align="left"><asp:label id="Message" Runat="server" ForeColor="#ff0000"></asp:label></td></tr><tr><td vAlign="top" align="left"><b>E-mail:</b></td></tr><tr><td vAlign="top" align="left"><asp:textbox id="username" Runat="server" Width="120"></asp:textbox></td></tr><tr><td vAlign="top" align="left"><b>Password:</b></td></tr><tr><td vAlign="top" align="left"><asp:textbox id="password" Runat="server"Width="120" TextMode="Password"></asp:textbox></td></tr><tr><td vAlign="top" align="left"><asp:checkbox id="saveLogin" Runat="server"Text="<b>Save my login</b>"></asp:checkbox></td></tr><tr><td vAlign="top" align="right"><asp:imagebutton id="btnLogin" Runat="server"ImageUrl="/images/w2k/login/btnLogin.gif"></asp:imagebutton></td></tr></table></form></body></HTML>界面做好之后,就開始編寫提交按鈕事件,首先需要注冊該事件,代碼如下:private void InitializeComponent(){;;;;this.btnLogin.Click += new System.Web.UI.ImageClickEventHandler(this.btnLogin_Click);...}事件注冊好之后,自然就是編寫事件處理函數了:private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e){CCommonDB sql = new CCommonDB();string redirect = "";if((redirect = sql.AuthenticateUser(this.Session, this.Response,username.Text, password.Text, saveLogin.Checked)) != string.Empty){// Redirect the userResponse.Redirect(redirect);}else{Message.Text = "Login Failed!";}}讀者看完上面的代碼之后一定想問CCommonDB是哪里來的東東,這是我編寫的一個類,用來處理用戶登錄信息的,如果成功則把相關信息寫入session、Cookie和SQL數據庫,同時跳到default.aspx頁面。具體如下:CCommonDB.csnamespace secure.Components{public class CCommonDB : CSql{public CCommonDB() : base() { }public string AuthenticateUser(System.Web.SessionState.HttpSessionState objSession, // Session VariableSystem.Web.HttpResponse objResponse,;// Response Variablestring email,// Loginstring password,;;;;;// Passwordbool bPersist// Persist login){int nLoginID;;= 0;int nLoginType;;= 0;// Log the user inLogin(email, password, ref nLoginID, ref nLoginType);if(nLoginID != 0);;// Success{// Log the user inSystem.Web.Security.FormsAuthentication.SetAuthCookie(nLoginID.ToString(), bPersist);// Set the session varaibles;;;;objSession["loginID"];;= nLoginID.ToString();objSession["loginType"] = nLoginType.ToString();// Set cookie information incase they made it persistantSystem.Web.HttpCookie wrapperCookie = new System.Web.HttpCookie("wrapper");wrapperCookie.Value = objSession["wrapper"].ToString();wrapperCookie.Expires = DateTime.Now.AddDays(30);System.Web.HttpCookie lgnTypeCookie = new System.Web.HttpCookie("loginType");lgnTypeCookie.Value = objSession["loginType"].ToString();lgnTypeCookie.Expires = DateTime.Now.AddDays(30);// Add the cookie to the responseobjResponse.Cookies.Add(wrapperCookie);objResponse.Cookies.Add(lgnTypeCookie);return "/candidate/default.aspx";}case 1:;;// Admin Login{return "/admin/default.aspx";}case 2:;;// Reporting Login{return "/reports/default.aspx";}default:{return string.Empty;}}}else{return string.Empty;}}/// <summary>/// Verifies the login and password that were given/// </summary>/// <param name="email">the login</param>/// <param name="password">the password</param>/// <param name="nLoginID">returns the login id</param>/// <param name="nLoginType">returns the login type</param>public void Login(string email, string password, ref int nLoginID, ref int nLoginType){ResetSql();DataSet ds = new DataSet();// Set our parametersSqlParameter paramLogin = new SqlParameter("@username", SqlDbType.VarChar, 100);paramLogin.Value = email;SqlParameter paramPassword = new SqlParameter("@password", SqlDbType.VarChar, 20);paramPassword.Value = password;Command.CommandType = CommandType.StoredProcedure;Command.CommandText = "glbl_Login";Command.Parameters.Add(paramLogin);Command.Parameters.Add(paramPassword);Adapter.TableMappings.Add("Table", "Login");Adapter.SelectCommand = Command;Adapter.Fill(ds);if(ds.Tables.Count != 0){DataRow row = ds.Tables[0].Rows[0];// Get the login id and the login typenLoginID;;= Convert.ToInt32(row["Login_ID"].ToString());nLoginType;;= Convert.ToInt32(row["Login_Type"].ToString());}else{nLoginID = 0;nLoginType = 0;}}}abstract public class CSql{private SqlConnection sqlConnection;;;;;;;// Connection stringprivate SqlCommand sqlCommand;;;// Commandprivate SqlDataAdapter sqlDataAdapter;;;;;;;// Data Adapter;;;;;;private DataSet sqlDataSet;;;;;// Data Setpublic CSql(){sqlConnection;;= new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);sqlCommand;;;;= new SqlCommand();sqlDataAdapter;;= new SqlDataAdapter();sqlDataSet;;;;= new DataSet();sqlCommand.Connection = sqlConnection;}/// <summary>/// Access to our sql command/// </summary>protected SqlCommand Command{get { return sqlCommand; }}/// <summary>/// Access to our data adapter/// </summary>protected SqlDataAdapter Adapter{get { return sqlDataAdapter; }}/// <summary>/// Makes sure that everything is clear and ready for a new query/// </summary>protected void ResetSql(){if(sqlCommand != null){sqlCommand = new SqlCommand();sqlCommand.Connection = sqlConnection;}if(sqlDataAdapter != null)sqlDataAdapter = new SqlDataAdapter();if(sqlDataSet != null)sqlDataSet = new DataSet();}/// <summary>/// Runs our command and returns the dataset/// </summary>/// <returns>the data set</returns>protected DataSet RunQuery(){sqlDataAdapter.SelectCommand = Command;sqlConnection.Open();sqlConnection.Close();sqlDataAdapter.Fill(sqlDataSet);return sqlDataSet;}}}
標簽: b站 嗶哩嗶哩
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品综合网| 99久久精品免费看国产| 国产一区二区三区久久久| 亚洲人成免费| 国产日韩精品久久久| 激情欧美一区二区三区在线观看| 国产女主播一区二区| 国产精品免费视频网站| 国产成人综合亚洲91猫咪| 欧美在线影院一区二区| 亚洲国产成人av网| 一区二区精品| 日韩美女啊v在线免费观看| 99在线精品视频| 制服.丝袜.亚洲.另类.中文| 首页国产欧美日韩丝袜| 99精品国产99久久久久久福利| 久久久久久夜精品精品免费| 国产91高潮流白浆在线麻豆 | 国产综合色产在线精品| 色噜噜狠狠色综合欧洲selulu| 一区二区三区国产精华| 日韩视频一区| 国产精品成人在线观看| 午夜久久美女| 欧美国产成人精品| 国产精品v亚洲精品v日韩精品 | 国产精品乱码人人做人人爱 | 成人高清免费观看| 精品福利视频一区二区三区| 国产成人av电影在线播放| 欧美精品色一区二区三区| 国产一区在线观看视频| 欧美日韩高清影院| 激情偷乱视频一区二区三区| 欧美日韩一级片在线观看| 美女一区二区三区在线观看| 欧美色倩网站大全免费| 久久精品国产在热久久| 欧美精品第1页| 国产成人精品免费在线| 精品日韩成人av| 国产不卡在线一区| 日韩免费一区二区三区在线播放| 国产成人精品免费视频网站| 日韩女优av电影在线观看| 不卡的电影网站| 久久久www免费人成精品| 91免费在线看| 国产精品久久久久久户外露出| 精品av久久久久电影| 一区二区欧美国产| 性欧美xxxx大乳国产app| 亚洲一二三区在线观看| 老司机精品视频网站| 久久精品国产亚洲5555| 91精品国产福利| 99久久精品国产一区二区三区| 欧美精品一区二区三区久久久| www.爱久久.com| 久久久久久99精品| 亚洲视频一区| 亚洲国产精品麻豆| 日本精品裸体写真集在线观看| 国产在线观看免费一区| 欧美大度的电影原声| 97精品超碰一区二区三区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人禁用看黄a在线| 亚洲国产岛国毛片在线| 国产精品一区二区三区免费观看 | 91色综合久久久久婷婷| 亚洲日本青草视频在线怡红院| 小嫩嫩精品导航| 国产综合一区二区| 欧美videofree性高清杂交| 亚洲欧美一区二区原创| 亚洲精品日韩专区silk| 久久综合九色综合网站| 国产呦萝稀缺另类资源| 久久久www成人免费毛片麻豆| 欧美午夜视频| 亚洲第一狼人社区| 欧美一区二区久久久| 欧美少妇一区| 日韩福利视频导航| 日韩精品专区在线影院重磅| 国内自拍一区| 日本不卡的三区四区五区| www一区二区| 亚洲美女少妇无套啪啪呻吟| 久久66热re国产| 欧美国产精品v| 色诱视频网站一区| 波多野结衣精品在线| 亚洲免费在线视频| 欧美丝袜第三区| 91女厕偷拍女厕偷拍高清| 午夜国产精品影院在线观看| 欧美大片拔萝卜| 亚洲一区二区三区四区五区午夜| 国产精品综合一区二区三区| 亚洲天堂免费在线观看视频| 欧美日韩中文另类| 欧美亚州在线观看| 麻豆91精品视频| 国产欧美1区2区3区| 日本电影欧美片| 国产在线成人| 精品中文字幕一区二区| 亚洲国产精品成人综合色在线婷婷| 翔田千里一区二区| 99re热视频精品| 免费成人在线网站| 中文字幕在线不卡一区二区三区| 欧美亚洲国产怡红院影院| 欧美精品福利| 国产综合色产在线精品| 亚洲精选免费视频| 精品国产一区二区精华| 一本大道久久a久久综合| 国产精品v亚洲精品v日韩精品| 激情伊人五月天久久综合| 中文字幕日韩精品一区| 欧美一区二区三区影视| 性高湖久久久久久久久| 91免费视频网址| 久久不见久久见免费视频7| 国产精品久久久久久久久晋中 | 欧美一区二区三区视频免费| 亚洲免费av网站| 制服丝袜亚洲色图| 鲁鲁狠狠狠7777一区二区| 在线观看日产精品| 欧美一区二区免费视频| 亚洲自拍偷拍综合| 亚洲成人在线观看视频| 午夜精品爽啪视频| 日本亚洲三级在线| 欧美jjzz| 日韩欧美你懂的| 欧美激情一区二区| 日日夜夜精品视频免费| 夜夜嗨一区二区三区| 亚洲日穴在线视频| 日韩精品欧美精品| 国产成人综合网站| 欧美在线999| 99在线精品视频在线观看| 91色|porny| 精品在线免费视频| 婷婷中文字幕综合| 亚洲黄色免费网站| 国产精品国产三级国产aⅴ中文| 2021国产精品久久精品| 91精品黄色片免费大全| 在线观看欧美精品| 亚洲综合丁香| 国产欧美亚洲日本| 狠狠色综合色区| 欧美一区二区三区免费看| 国产91丝袜在线18| 国产精品一线二线三线精华| 免费高清在线视频一区·| 天堂精品中文字幕在线| 一区二区视频在线| 最近中文字幕一区二区三区| 欧美国产精品v| 中文字幕国产一区| 国产欧美日韩精品a在线观看| 欧美电视剧免费全集观看| 91精品国产综合久久福利软件| 欧美私模裸体表演在线观看| 欧美最新大片在线看| 久久一二三四| 久久亚洲二区| 久久婷婷一区| 91久久精品网| 欧美怡红院视频| 欧美日韩亚洲另类| 欧美在线短视频| 欧美日韩一区国产| 欧美精品一二三| 欧美一区二区在线看| 91精品国产欧美日韩| 日韩三级精品电影久久久 | 亚洲一区二区三区精品视频| 国产精品区一区| 久久国产精品久久精品国产| 美日韩精品免费| 一本高清dvd不卡在线观看| 在线视频欧美区| 欧美精品色一区二区三区| 欧美伦理视频网站| 91麻豆精品国产91久久久久| 日韩一级免费一区| 337p日本欧洲亚洲大胆色噜噜| 欧美精品一区二区三区在线| 久久久久99精品国产片| 欧美国产精品中文字幕|