首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请教用了Parameters带参数后,还用对字符进行过滤吗

2012-03-29 
请问用了Parameters带参数后,还用对字符进行过滤吗?各位大虾,你们好,请看我的代码:#region HtmlEncode///

请问用了Parameters带参数后,还用对字符进行过滤吗?
各位大虾,你们好,请看我的代码:

 #region HtmlEncode
  /// <summary>
  /// 说明:过滤危险字符
  /// 返回值:处理后的这符串。
  /// 参数:str原字符串。
  /// 创建日期:2008-2-23
  /// 创建人:
  /// </summary>

  public static string HtmlEncode(string str)
  {
  if (str.Trim().ToString() == "")
  { str = ""; }
  else
  {
  str = str.Replace("&", "&amp;");
  str = str.Replace("<", "&lt;");
  str = str.Replace(">", "&gt");
  str = str.Replace("'", "’");
  str = str.Replace("*", "");
  str = str.Replace("\n", "<br/>");
  str = str.Replace("\r\n", "<br/>");
  //str = str.Replace("?","");
  str = str.Replace("select", "");
  str = str.Replace("insert", "");
  str = str.Replace("update", "");
  str = str.Replace("delete", "");
  str = str.Replace("create", "");
  str = str.Replace("drop", "");
  str = str.Replace("delcare", "");
  }
  return str.Trim();
  }
  #endregion




UserName = HtmlEncode(Uname.Text.Trim().ToString());
  UserPass = GetMd5(HtmlEncode(Upass.Text.Trim().ToString()));
  string StrSql = "select top 1 id from admin where username=@username and userpass=@userpass and is_open=true and is_admin=true";
  MyDBlink.GetSqlCommand(StrSql);
  MyDBlink.comm.Parameters.AddWithValue("@username", SqlDbType.VarChar);
  MyDBlink.comm.Parameters["@username"].Value = UserName;
  MyDBlink.comm.Parameters.AddWithValue("@userpass", SqlDbType.VarChar);
  MyDBlink.comm.Parameters["@userpass"].Value = UserPass;


我进行了一次过滤字符串后,又用了一次Parameters,我想请问一下,我这么做多余吗?用了Parameters后还需要对字符串进行过滤吗?谢谢

[解决办法]
-_- 这么复杂, 取值的时候处理,不好么?
你难道不允许文章内容 标题之类的含有 select insert之类的?
[解决办法]
凡是用户的输入你就先过滤一下 没有坏处
[解决办法]
用了Parameters后不需要对字符串进行过滤
[解决办法]
如果你的sql语句不是动态拼接的,不用再进行过滤
[解决办法]
不用
[解决办法]
基本上不用了
[解决办法]
SQL注入分为轻级注册和深度注入。要防深度注入还是有必要再次过滤。
深度注入的文章,之前有看过。忘记哪看过了。
不过通常讲很多人还是只过滤到轻级注入
[解决办法]

探讨
SQL注入分为轻级注册和深度注入。要防深度注入还是有必要再次过滤。
深度注入的文章,之前有看过。忘记哪看过了。
不过通常讲很多人还是只过滤到轻级注入

------解决方案--------------------


NO
[解决办法]
参数化可以达到基本要求了,绝对的安全是不存在的.
如果强行过滤就很大程度上限制了用户的输入.
[解决办法]
Agree with 11 floor's
[解决办法]
可以不用了
[解决办法]
是可以不用
但是防止不了注入 
还是过滤的好
[解决办法]
存储过程中不拼SQL 就没必要过滤了
[解决办法]
没必要这么过滤2次,其实用了Parameters就足够了
[解决办法]

探讨
用了Parameters后不需要对字符串进行过滤

[解决办法]
探讨
没必要这么过滤2次,其实用了Parameters就足够了

热点排行