asp.net C#怎么防止SQL注入.....

dys_198102 2009-01-05 10:58:08
asp.net C#程序,
如果用ACCESS怎么防止SQL注入,
SQLSERVER又怎么防止SQL注入?????

高手指点
...全文
4001 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy_flydream 2012-03-30
  • 打赏
  • 举报
回复
也要防止,你虽然是select操作,因为客户端可以输入内容,给你传参数的时候可以传update、delete语句
ttyrone 2011-10-13
  • 打赏
  • 举报
回复
目前在做登录页,数据库只有select操作,没有update和delete,也需要防止sql注入吗?
hsqtl 2011-10-11
  • 打赏
  • 举报
回复
sdfs
kris_yao 2010-08-11
  • 打赏
  • 举报
回复
好贴!
jingpinchen 2010-07-19
  • 打赏
  • 举报
回复
顶一下了
iishou8 2009-10-16
  • 打赏
  • 举报
回复
mark
SHAOXING1988 2009-10-12
  • 打赏
  • 举报
回复
学学啊!那是使用存储过程还是sql语句好
PSSonyXbox 2009-09-09
  • 打赏
  • 举报
回复
收帖子 收藏一下呀
oflying907 2009-09-09
  • 打赏
  • 举报
回复
mark
a285319737 2009-07-08
  • 打赏
  • 举报
回复
都给点例子看下哈!
静_心 2009-03-30
  • 打赏
  • 举报
回复
收藏
reborter 2009-03-30
  • 打赏
  • 举报
回复
呵呵,学习
nighce 2009-03-30
  • 打赏
  • 举报
回复
up
青梦奇缘 2009-03-30
  • 打赏
  • 举报
回复
public bool Deposits(string accountCode,int type,decimal amount)
{
try
{
SqlParameter Parameter1 = new SqlParameter("@accountCode", SqlDbType.NVarChar, 10);
Parameter1.Value = accountCode;
SqlParameter Parameter2 = new SqlParameter("@type", SqlDbType.Int);
Parameter2.Value = type;
SqlParameter Parameter3 = new SqlParameter("@amount", SqlDbType.Decimal);
Parameter3.Value = amount;
List<SqlParameter> Parameters = new List<SqlParameter>();
Parameters.Add(Parameter1);
Parameters.Add(Parameter2);
Parameters.Add(Parameter3);
string sql = "exec myAccount @accountCode ,@type,@amount";
ArrayList SqlStrings = new ArrayList();
SqlStrings.Add(sql);
return acct.ExecuteSQL(SqlStrings, Parameters.ToArray<SqlParameter>());
}
catch
{
return false;
}
}
//其中SqlParameter对象可以把类型参数在执行数据库语句的时候序列化!
皓月明 2009-03-30
  • 打赏
  • 举报
回复
进行多重数据过滤,进行数据类型判断
M_arlboro 2009-03-30
  • 打赏
  • 举报
回复
过滤输入字符串.
不要拼字符串 参数给他"@"就行啦
就搞定了.
benbirdar 2009-03-30
  • 打赏
  • 举报
回复
用参数化parameter形式传递参数
凤凰涅檠 2009-03-30
  • 打赏
  • 举报
回复
分享自己的:

public static DataTable FillDataTable(string cmdtxt, SqlParameter[] parameters)
{
DataTable dt = new DataTable();
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand(cmdtxt, connection);
foreach (SqlParameter p in parameters)
{
command.Parameters.Add(p);
}
SqlDataAdapter adapter = new SqlDataAdapter(command);
connection.Open();
adapter.Fill(dt);
connection.Close();
}
return dt;
}
liuping234232783 2009-03-30
  • 打赏
  • 举报
回复
vs2005+sql 200防止SQL注入我所知道的有2中方法;
1.用SQL存储过程
2.SQL参数化.
帖出我自己防止SQL注入的方法代码:
string sqlu = "update useradmin set u_pass=@pass where u_clerkno='" + Session["username"] + "'";

SqlCommand cmda = new SqlCommand(sqlu, scn);

cmda.Parameters.Add(new SqlParameter("@Pass", SqlDbType.NVarChar, 20));

cmda.Parameters["@pass"].Value = TextBox3.Text.Trim().ToString();

cmda.ExecuteNonQuery();

Response.Redirect("main.aspx");
把SQL语句改下就可以了!!道理是一样的 !
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 amanizty 的回复:]
引用 5 楼 lovexiaoxiao 的回复:
引用 1 楼 glt3260053 的回复:
都差不多,做到以下几点就安全多了
1.查看和修改等的权限分离
2.过滤所有用户输入
3.把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令
4.用存储过程来执行所有的查询
5.完善用户输入的的长度和类型等验证
6.检查用户输入的合法性
7.将用户登录名称、密码等数据加密保存

up

up~
[/Quote]
UP
加载更多回复(30)

62,074

社区成员

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

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

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

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