首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • <b><img><d>之类的标签这样的标题能不能发",我在aspx提交的时候报错 [已结贴,结贴人:addisjeams]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 05:07:27 楼主
    我发帖的页面,两个textbox,第一个是主题,第二个是主内容
    当主题提交的时候就会报错
    非要在page加入 ValidateRequest="false"才能继续通过
    希望大家能告诉我,怎么保证textbox输入的安全性
    我现在的验证控件,已经不能用了,因为用了第三方软件,导致验证控件无法使用(虽然会报错,但是无法禁止提交)


    大家看到我的题目了吧? <b> <img>之类的标签
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:29:021楼 得分:2
    我想你说的验证是在客户端验证,客户端的验证是不安全的,如果要安全还是得到服务端进行验证,可以考虑提交到服务端后进行验证
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:43:352楼 得分:2
    <system.web>
      <pages validateRequest="false" />
    </system.web>
    加上以上的那句就OK了~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:48:063楼 得分:3
    一是将所有的html标签过滤掉;
    C# code
    /// <Header> /// 去除 HTML tag /// </Header> /// <param name="HTML"></param> /// <returns>结果</returns> public static string StripHTML(string HTML) //google "StripHTML" 得到 { string[] Regexs = { @"<script[^>]*?>.*?</script>", @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>", @"([\r\n])[\s]+", @"&(quot|#34);", @"&(amp|#38);", @"&(lt|#60);", @"&(gt|#62);", @"&(nbsp|#160);", @"&(iexcl|#161);", @"&(cent|#162);", @"&(pound|#163);", @"&(copy|#169);", @"&#(\d+);", @"-->", @"<!--.*\n" }; string[] Replaces = { "", "", "", "\"", "&", "<", ">", " ", "\xa1", //chr(161), "\xa2", //chr(162), "\xa3", //chr(163), "\xa9", //chr(169), "", "\r\n", "" }; string s = HTML; for (int i = 0; i < Regexs.Length; i++) { s = new Regex(Regexs[i], RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(s, Replaces[i]); } s.Replace("<", ""); s.Replace(">", ""); s.Replace("\r\n", ""); return s; } }

    二是将所有的html标签转换为UBB标签
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:07:294楼 得分:3
    /// <summary>
            /// Method to make sure that user's inputs are not malicious
            /// </summary>
            /// <param name="text">User's Input </param>
            /// <param name="maxLength">Maximum length of input </param>
            /// <returns>The cleaned up version of the input </returns>
            public static string InputText(string text, int maxLength) {
                text = text.Trim();
                if (string.IsNullOrEmpty(text))
                    return string.Empty;
                if (text.Length > maxLength)
                    text = text.Substring(0, maxLength);
                text = Regex.Replace(text, "[\\s]{2,}", " "); //two or more spaces
                text = Regex.Replace(text, "( <[b ¦B][r ¦R]/*>)+ ¦( <[p ¦P](. ¦\\n)*?>)", "\n"); // <br>
                text = Regex.Replace(text, "(\\s*&[n ¦N][b ¦B][s ¦S][p ¦P];\\s*)+", " "); //&nbsp;
                text = Regex.Replace(text, " <(. ¦\\n)*?>", string.Empty); //any other tags
                text = text.Replace("'", "''");
                return text;
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:25:205楼 得分:0
    谢谢大家.昨天晚上做了很久,查了不少资料
    validateRequest="false",这个方法是晚上给的方案,我就是担心安全问题,所以有点犹豫不决

    结贴了,分不多,因为我本身就无什么积分,只是聊表心意,感谢
    修改 删除 举报 引用 回复

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