当前位置:首页 » 编程语言 » adonetsql语句

adonetsql语句

发布时间: 2025-03-11 21:40:14

Ⅰ ADO.NET数据库查询

关于sql注入的基本概念经典的注入语句是' or 1=1--
单引号而截断字符串,“or 1=1”的永真式的出现使得表的一些信息被暴露出来,如果sql语句是select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用都使用drop命令,那么可能你的整个数据库得全线崩溃。

当然,现在重点不是讲sql注入的害处,而是说说如何最大限度的避免注入问题。

sql注入的存在在最大危害,是sql的执行语句没有和控制语句分开,我们想要select一些东西,但用户可能拼出' or 1=1甚至再加上delete/update/drop,后来是属于控制语句了,所以要避免sql的注入,就必须把查询语句与控制语句分开。

SqlParameter给我们提供了一个很好的类,有了它,我们可以不现拼接字符串,也可以不再担心单引号带来的惨剧,因为,这一切会有人来为我们完成的。

简单的给个示例

传统的查询语句的sql可能为
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。

现在,我们要改写这样的语句,使用SqlParameter来做

SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);

这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。

当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]进行必要的检测与分析,这样才安全

所以,使用参数化的sql语句,是一种很好的做法,不过,我们也还有更好的办法,那就是使用参数化的存储过程,如果你有兴趣,可以继续探讨。
----转载

Ⅱ 在ASP.NET中如何实现修改用户密码并保存到数据库中

很简单,在这里将会用到Ado.Net技术,主要用于与数据库的链接:
Sql语句
,这里用的Sql语句有两句:
第一句:Select
*
From
表名
where
Id
=
‘要修改的用户ID(编号)’,这句话的意思主要是将该用户的信息从数据库中查询出来;
第二句:Update
from
表名
Set
数据库密码字段
=
‘修改后的密码字段’
where
Id
=
‘要修改的用户ID(编号)’。
其他的代码,我相信你应该会吧!

Ⅲ 求ado.net大神,做简单登录界面

//添加两个文本框,以输入用户名textBox1和密码textBox2
//添加一个按钮,以验证登陆button1
//引用命名空间usingSystem.Data.SqlClient;
privatevoidbutton1_Click(objectsender,EventArgse)//按钮单击事件
{//定义连接字符串并初始化
stringconnStr="server=.;database=Test;uid=sa;pwd=888888";
//创建连接对象,使用连接字符串
SqlConnectioncn=newSqlConnection(connStr);
//创建命令对象,使用带参SQL语句,并以文本框的值作为实参
//SQL语句:从myuser表中查询,返回符合uid=用户名并且pwd=密码的数据
SqlCommandcmd=newSqlCommand("select*frommyuserwhereuid=@uidandpwd=@pwd",cn);
cmd.Parameters.AddWithValue("@uid",textBox1.Text.Trim());
cmd.Parameters.AddWithValue("@pwd",textBox2.Text.Trim());
//打开链接
cn.Open();
//如果有返回值,证明合法用户,没有返回值即非法用户
if(cmd.ExecuteScalar()==null)//执行查询并判断
{
MessageBox.Show("登陆失败");
}
else
{
MessageBox.Show("登陆成功");
}
//关闭连接
cn.Close();
}

热点内容
服务器搭建DOS 发布:2025-03-12 12:18:47 浏览:866
python引用全局变量 发布:2025-03-12 12:01:44 浏览:60
db2执行带中文的脚本报错 发布:2025-03-12 12:01:43 浏览:954
压缩板厚度 发布:2025-03-12 11:44:31 浏览:665
pythonbase64图片 发布:2025-03-12 11:42:14 浏览:550
ftp协议的rfc 发布:2025-03-12 11:37:53 浏览:158
陌陌清除我访问别人的 发布:2025-03-12 11:30:45 浏览:809
aero文件夹 发布:2025-03-12 11:30:44 浏览:614
修改地址栏如何下载配置文件 发布:2025-03-12 11:17:13 浏览:13
压缩层 发布:2025-03-12 11:01:52 浏览:503