注入式攻击??

love531000 2008-12-25 05:40:15
我现在的这段代码代码存在 了 会被 SQL 注入式攻击的问题··有人能帮我改下吗·· 使他不回被 攻击了

sqlcon = new SqlConnection(strCon);
sqlcon.Open();
string sqlstr = "SELECT * FROM [Future].[dbo].[Users] where [username]='" + Txtuser.Value + "'and [password]='" + Txtpass.Value + "'";
sqlstr.Replace("'", "''");
SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlcon);
DataSet ds = new DataSet();
MyAdapter.Fill(ds);
sqlcon.Close();
if (ds.Tables[0].Rows.Count == 1)
{


Response.Redirect("datum.aspx");
}
else{
Response.Write("<script>alert('错误的用户名和密码')</script>");
}
...全文
159 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
archu 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 love531000 的回复:]
有高手来回答我一下吗· 我会 加分的·
[/Quote]
你把前面的所有回答综合起来看,答案不就有了吗?总不能让人家把步骤一步一步给你写出来啊,自己需要多动动脑筋。
love531000 2008-12-25
  • 打赏
  • 举报
回复
好心人来啊·· 来帮我下 · 今天我一定得把这个 问题得搞定啊··
love531000 2008-12-25
  • 打赏
  • 举报
回复
有高手来回答我一下吗· 我会 加分的·
love531000 2008-12-25
  • 打赏
  • 举报
回复
sqlcon = new SqlConnection(strCon);
sqlcon.Open();
string str = "SELECT * FROM [Future].[dbo].[Users] where [username]=@username and [password]=@password";
SqlCommand sqlcom = new SqlCommand(str, sqlcon);
sqlcom.Parameters.AddWithValue("@username", Txtuser.Value);
sqlcom.Parameters.AddWithValue("@password", Txtpass.Value);
sqlcom.ExecuteNonQuery();

if ( sqlcom.ExecuteNonQuery() == 1)
{
Response.Redirect("datum.aspx");
}
else
{
Response.Write("<script>alert('错误的用户名和密码')</script>");
}


能帮我看看我 这样写对吗·
CutBug 2008-12-25
  • 打赏
  • 举报
回复
对,限制单引号还不够
还是改用存储过程,用参数限制一下用户输入,
顺便密码加一下密
yangshenghong 2008-12-25
  • 打赏
  • 举报
回复
用存储过程啊
archu 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lianglei9810 的回复:]
全部错误
/// <summary>
/// 防范网页sql注入
/// </summary>
/// <param name="str"> </param>
/// <returns> </returns>
public string PassSqlString(string str)
{
str = str.ToLower();
str.Replace("select","");
str.Replace("delete", "");
str.Replace("insert", "");
str.Replace("update", "");
str.Replace("-", "");
str.Replace("'", "''");
return str;
}
用这个方法 过滤 用户输入的 字符串…
[/Quote]
这么麻烦的话,还不如用UrlScan,人家考虑得还比你周到:
http://learn.iis.net/page.aspx/476/common-urlscan-scenarios/

再给几篇参考文章
http://msdn.microsoft.com/en-us/magazine/cc163917.aspx
http://msdn.microsoft.com/en-us/library/bb355989.aspx
http://msdn.microsoft.com/en-us/library/ms998271.aspx
http://msdn.microsoft.com/en-us/library/ms998274.aspx
http://msdn.microsoft.com/en-us/library/aa302420.aspx
http://msdn.microsoft.com/en-us/library/aa302421.aspx
lianglei9810 2008-12-25
  • 打赏
  • 举报
回复
真服了 你们 ,看好 是sql注入 ;
刚才忘说了 利用参数化sql语句 可以避免sql注入;
不用参数化sql语句 必须过滤所有 string 行的 页面上的 参数
如 www.sohu.com?id=1;delete users--
必须把id转换成int ,
love531000 2008-12-25
  • 打赏
  • 举报
回复
谁能帮我下 完整 的代码 能帮我下吗·
mengxj85 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 CutBug 的回复:]
单引号处理一下
Txtuser.Value.Replace("'","'');
Txtpass.Value.Replace("'","'');
密码最好用MD5加一下密放到库里
[/Quote]
最好用存储过程跟加密
光去引号是不够的,建议楼主看看论坛里的SQL注入整理贴
CutBug 2008-12-25
  • 打赏
  • 举报
回复
Txtuser.Value.Replace("'","''");
Txtpass.Value.Replace("'","''");
mengxj85 2008-12-25
  • 打赏
  • 举报
回复
string sqlstr = "SELECT * FROM [Future].[dbo].[Users] where [username]=@userName and [password]=@pwd";
就直接顶楼上的
或者用存储过程
CutBug 2008-12-25
  • 打赏
  • 举报
回复
单引号处理一下
Txtuser.Value.Replace("'","'');
Txtpass.Value.Replace("'","'');
密码最好用MD5加一下密放到库里
lianglei9810 2008-12-25
  • 打赏
  • 举报
回复
全部错误
/// <summary>
/// 防范网页sql注入
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string PassSqlString(string str)
{
str = str.ToLower();
str.Replace("select","");
str.Replace("delete", "");
str.Replace("insert", "");
str.Replace("update", "");
str.Replace("-", "");
str.Replace("'", "''");
return str;
}
用这个方法 过滤 用户输入的 字符串 如: PassSqlString(Txtpass.Value )

所谓sql注入 就是例如在 用户名文本框中 输入 :a;delete users --
或输入一个 存储过程 来修改你的数据库
注意 -- 是注释掉以后的代码 ;号 开始执行下一个语句
zhxhdean 2008-12-25
  • 打赏
  • 举报
回复
1,密码加密
2.先匹配用户名,再匹配密码
3,参数化
love531000 2008-12-25
  • 打赏
  • 举报
回复
能帮我改下·上面的代码·谢谢了·
流浪河 2008-12-25
  • 打赏
  • 举报
回复
1.密码加密
2.用参数化查询
adoxcy 2008-12-25
  • 打赏
  • 举报
回复
存储过程+SqlParameter
HDNGO 2008-12-25
  • 打赏
  • 举报
回复
1.先判断用户名,取出密码再进行判断。。。
2.SqlParameter参数~

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧