第9讲数据库程序的安全性设计.pptVIP

  • 0
  • 0
  • 约4.62千字
  • 约 20页
  • 2019-09-29 发布于湖北
  • 举报
第8讲 数据库程序的安全性设计 课程内容 目录 1,身份认证 2,口令加密 3,基于角色的授权 4,防范SQL注入攻击 1,身份认证 身份认证的意思是:确定你就是你所声称的你。 一般做法是,在数据库中设计用户表,存放用户登录号与密码。用户进入系统之前,输入登录号和密码,系统将输入数据与用户表中的数据进行匹配。从而验证身份。 1,身份认证 以BookStore系统为例,在BookStore数据库中设计表TUser,结构如下: 在FrmMain中,改写FrmMain_Load方法 private void FrmMain_Load(object sender, EventArgs e) { FrmLogon frmLogon = new FrmLogon(); frmLogon.ShowDialog(); } 在应用程序中增加一个登录窗体FrmLogon,设计效果如下: //登录 private void btnLogon_Click(object sender, EventArgs e) { bool loginSuccess; Dac.Conn.Open(); SqlCommand cmd = Dac.Conn.CreateCommand(); cmd.CommandText = Select * From TUser Where uid= + txtUserId.Text + ; SqlDataReader dr = cmd.ExecuteReader(); if (!dr.Read()) {MessageBox.Show(无此用户);} else if (txtPwd.Text != dr[Pwd].ToString()) {MessageBox.Show(口令错误);} else {loginSuccess = true; } dr.Close(); Dac.Conn.Close(); if(loginSuccess) {this.Close();} } 2. 口令加密 数据库中,用户的口令一般不用明文存放,加密的方法通常采用MD5算法。步骤: 原始口令通过MD5计算散列值,散列值存放在数据库中 以后输入的口令计算散列值,与数据库里的存放的散列值比较,相符则口令正确。 2,口令加密 例:MD5算法加密口令 using System; using System.Security.Cryptography; using System.Text; using System.Security; //将一个明文用MD5算法加密 public string GetMD5Hash(string strSource) { //取得输入字符串的字节数组 byte[] data = Encoding.Unicode.GetBytes(strSource); //一个MD5加密对象 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); //用MD5加密对象对字节数组加密,得到字节数组 byte[] hash_byte = md5.ComputeHash(data); //将加密后的字节数组转换为字符串 string result = System.BitConverter.ToString(hash_byte); return result; } 口令加密 例:MD5算法检验输入的口令 public bool validateInput(string input, string pwd) { byte[] data = Encoding.Unicode.GetBytes(input); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()

文档评论(0)

1亿VIP精品文档

相关文档