首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请问用了Parameters带参数后,还用对字符进行过滤吗? [已结贴,结贴人:zheng520]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:30:05 楼主
    各位大虾,你们好,请看我的代码:

    #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后还需要对字符串进行过滤吗?谢谢
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:33:171楼 得分:1
    -_- 这么复杂, 取值的时候处理,不好么?
    你难道不允许文章内容 标题之类的含有 select insert之类的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:33:302楼 得分:5
    凡是用户的输入你就先过滤一下 没有坏处
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:33:543楼 得分:5
    用了Parameters后不需要对字符串进行过滤
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:34:274楼 得分:5
    如果你的sql语句不是动态拼接的,不用再进行过滤
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:35:245楼 得分:1
    不用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:37:066楼 得分:2
    基本上不用了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:38:287楼 得分:10
    SQL注入分为轻级注册和深度注入。要防深度注入还是有必要再次过滤。
    深度注入的文章,之前有看过。忘记哪看过了。
    不过通常讲很多人还是只过滤到轻级注入
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:40:298楼 得分:2
    引用 7 楼 tiancaolin 的回复:
    SQL注入分为轻级注册和深度注入。要防深度注入还是有必要再次过滤。
    深度注入的文章,之前有看过。忘记哪看过了。
    不过通常讲很多人还是只过滤到轻级注入
    深度注入?参数形式不能防止嘛?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:42:469楼 得分:0
    引用 8 楼 levenwood 的回复:
    引用 7 楼 tiancaolin 的回复:
    SQL注入分为轻级注册和深度注入。要防深度注入还是有必要再次过滤。
    深度注入的文章,之前有看过。忘记哪看过了。
    不过通常讲很多人还是只过滤到轻级注入
    深度注入?参数形式不能防止嘛?


    俺也想问这个问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:46:4210楼 得分:2
    NO
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:48:0011楼 得分:5
    参数化可以达到基本要求了,绝对的安全是不存在的.
    如果强行过滤就很大程度上限制了用户的输入.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 17:55:0912楼 得分:2
    Agree with 11 floor's
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 18:07:2013楼 得分:2
    可以不用了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 18:23:3814楼 得分:2
    是可以不用
    但是防止不了注入
    还是过滤的好
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 18:55:5915楼 得分:2
    存储过程中不拼SQL  就没必要过滤了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 20:39:5616楼 得分:2
    没必要这么过滤2次,其实用了Parameters就足够了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 21:02:0717楼 得分:1
    引用 3 楼 wuyi8808 的回复:
    用了Parameters后不需要对字符串进行过滤
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-14 08:50:4718楼 得分:1
    引用 16 楼 wf5360308 的回复:
    没必要这么过滤2次,其实用了Parameters就足够了

    确实不用
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved