关于SQL防注入的问题

vinjuviva 2008-12-19 10:30:25
我发现网上很多使用Request.QueryString("id")会存在SQL注入问题,哪么如果我不使用Request.QueryString("id"),采用Session是不是就不存在SQL注入的问题????
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sugar520 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kke_007 的回复:]
建义少用Session
服务器内存宝贵的
用存储过程
或用

public void AddOutParameter(DbCommand cmd, string parameterName, DbType dbType, int size)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Size = size;
dbParameter.Direction…
[/Quote]

DbCommand cmd = DB.GetSqlStringCommond(sql);
这个可以给详细一点?
西安风影 2008-12-19
  • 打赏
  • 举报
回复
显然不现实么,那得耗费多少session呢。

你只要做好防止sql注入就可以了。
要么检测id必须是数字型,要么过滤掉sql关键字。
If ParaValue="" or not isNumeric(Request.QueryString("id")) Then
Response.Write "参数" & ParaName & "必须为数字型"
Response.End
End If
jiang_jiajia10 2008-12-19
  • 打赏
  • 举报
回复
存在啊,无所谓你使用什么方式来传参,关键是你 要对前台提交过来的信息进行过滤。如:

string str = this.TextBox1.Text.Trim();
string newstr = str.Replace("'", "''")
kke_007 2008-12-19
  • 打赏
  • 举报
回复
建义少用Session
服务器内存宝贵的
用存储过程
或用

public void AddOutParameter(DbCommand cmd, string parameterName, DbType dbType, int size)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Size = size;
dbParameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(dbParameter);
}
/// <summary>
/// 增加参数列表
/// </summary>
/// <param name="cmd">CMD对象</param>
/// <param name="parameterName">参数名</param>
/// <param name="dbType">参数类型</param>
/// <param name="value">参数值</param>
public void AddInParameter(DbCommand cmd, string parameterName, DbType dbType, object value)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Value = value;
dbParameter.Direction = ParameterDirection.Input;
cmd.Parameters.Add(dbParameter);
}

public DbParameter AddInParameter2(DbCommand cmd, string parameterName, DbType dbType, object value)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Value = value;
dbParameter.Direction = ParameterDirection.Input;
return dbParameter;
}




public bool upFileUrl(int id,string imgUrl) {
string sql = "update video_info set image=@imgUrl where id=@id";
DbCommand cmd = DB.GetSqlStringCommond(sql);
DB.AddInParameter(cmd, "@imgUrl", DbType.String,imgUrl);
DB.AddInParameter(cmd, "@id", DbType.Int32,id);
return !this.IsEmpty(DB.ExecuteNonQuery(cmd));
}
bhtfg538 2008-12-19
  • 打赏
  • 举报
回复
参数化SQL


SELECT * FROM TABLE WHERE str=N'--;防止注入';
wzy_love_sly 2008-12-19
  • 打赏
  • 举报
回复
恩 对,其实加一些验证和去除一些特殊字符,一般的注入就能防止了

62,269

社区成员

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

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

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

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