1.大家一般一些特殊符号是怎么处理的(不给输就不用说了)
2.替换表单元素:类似如下function CovertFromXmlTag(value)
{
value = value.replace("&","&");
value = value.replace("&lt;", "<");
value = value.replace("&gt;", ">");
value = value.replace("&quot;", "\"");
value = value.replace("&apos;", "&apos;");
return value;
}public static string strReplace(string chr) 
        { 
             
            if(chr==null) 
            { 
                return ""; 
            } 
            else 
            {    
                chr=chr.Replace("<","&lt"); 
                chr=chr.Replace(">","&gt"); 
                chr=chr.Replace(" ","&nbsp;"); 
                chr=chr.Replace("’","’’"); 
                chr=chr.Replace("\n","<br>"); 
            } 
            return chr; 
        }
3.当我们Ajax应用的时候,会把表单通过&符号连接然后传值到后台Handle.ashx一般的页面。而这时候要是表单中输入了‘&’符号,怎么处理呢?
如果采用了2中的方法,那么替换的话就会有好多'&'符号,那么后台获取对象Request.Qurystring就会出问题。4.综合考虑,我是想请教大家有经验的人,对这个问题是怎么处理的?
反正我知道之前CSDN空间有这个表单bug被我发现了。很低级的
CSDN空间的BUG,居然可以显示表单,执行脚本,汗死我了5.希望大家能给出真正的经验答复。谢谢。----------------------------------分割线------------------------------------6.经常知道Session会因为好多原因(什么服务器重启等),会丢失存储的数据。
请问,大家有相关项目经验的人是怎么处理的呢?是用Cookies吗?
在此之上,用户正常退出,和不正常退出(关闭浏览器)等情况下,又有什么经验之谈呢?希望大家可以能给出建设性的答复。谢谢

解决方案 »

  1.   

    使用ASP.NET 请求校验
    使用权用约束输入
    对不安全的输入进行编码
    对Sql语句使用命令参数方式,在global里判断字符
    验证ASP.NET的错误没有被返回客户端在@ Page页面元素内加以下字段ValidateRequest = "false"禁用ASP.NET请求验证 
    使用HtmlEncode方法对输入的字符串进行编码 
    调用正则对字符中的HTML进行替换 
    StringBuilder sb = new StringBuilder(
    HttpUtility.HtmlEncode(htmlInputTxt.Text));
    sb.Replace("&lt;b&gt;", "<b>");
    sb.Replace("&lt;/b&gt;", "");
    sb.Replace("&lt;i&gt;", "<i>");
    sb.Replace("&lt;/i&gt;", "");
    Response.Write(sb.ToString());
    通过Post传递值,加密参数再解密判断参数类型是否符合session丢失原因很多,防止丢失可使用
    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20" />
      

  2.   

    第一个问题进行编码,好。第二个Session问题,没怎么讲啊
    我只想知道你们一般是怎么做的
      

  3.   

      public static string HtmlEncode(string str)
        {
          str = str.Replace(">", "&gt;");
          str = str.Replace("<", "&lt;");
          str = str.Replace(" ", " &nbsp;");
          str = str.Replace(" ", "&nbsp;");
          str = str.Replace("\"", "&quot;");
          str = str.Replace("\'", "&#39;");
          str = str.Replace("\n", "<br /> ");
          return str;
        }    /// <summary>
        /// 还原HTML中的特殊字符
        /// </summary>
        /// <param name="str">需要还原的文本。</param>
        /// <returns>还原好的文本。</returns>
        public static string HtmlDecode(string str)
        {
          str = str.Replace("&amp;", "&");
          str = str.Replace("&gt;", ">");
          str = str.Replace("&lt;", "<");
          //str = str.Replace("&nbsp;", " ");
          //str = str.Replace(" &nbsp;", " ");
          //str = str.Replace("&nbsp;", " ");
          str = str.Replace("&quot;", "\"");
          str = str.Replace("&#39;", "\'");
          str = str.Replace("<br /> ", "\n");
          return str;
        }
      

  4.   

    刚去测试了下,其实Ajax异步的时候'&'符号用escape就可以避免了我一直是这么做的,但是想当然的发这个帖子,哎但是没有人对那个保留用户信息之内的东西,谁有经验之谈。。
      

  5.   

    用身份票证
    登陆的时候
       FormsAuthentication.SetAuthCookie(Member.CompanyName, false);
                        Response.Cookies.Add(new HttpCookie("Mail", BJMember_Email.Text.Trim()));
                        Session["Mail"] = BJMember_Email.Text.Trim();
                        Response.Redirect("shhy-jbzl.aspx");
      

  6.   

    我也有经常 Session 丢失的情况,譬如 突然网站跳到登陆页面去了,
    Cookie 其实也不是很 好,有些不支持Cookie的那就不好了,你参考下 
    微软的 角色成员管理 。
      

  7.   

    <%@ Control Language="C#" ClassName="LogOut" %><script runat="server">
        protected string UserName;
        string Mail;
        //BJMember Member = new BJMember();
        //BJUserInfo UserInfo = new BJUserInfo();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.User.Identity.IsAuthenticated)
            {
                Panel1.Visible = true;
                Panel2.Visible = false;
            }
            else
            {
                Panel1.Visible = false;
                Panel2.Visible = true;
            }
        }    
    </script>
    <asp:Panel ID="Panel1" runat="server" Height="20px" Width="200px">
    <table>
    <tr>
    <td align="center">欢迎您:<A href="RediretPage.aspx?Title=<%=Page.User.Identity.Name%>"><%=Page.User.Identity.Name%></A> <a href="Loginout1.aspx">退出</a></td>
    </tr>
    </table></asp:Panel>
    <asp:Panel ID="Panel2" runat="server" Height="20px" Width="200px">
    <table border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td>
                               
                            <a href="gryhzc.aspx"> <img src="images/index_12.gif" width="53" height="24" border=0 /></a>
                            
                            </td>
                            <td class="k2">
                             <a href="gryhdl.aspx">
                            <img src="images/index_16.gif" width="53" height="23" border=0 />
                            </a>
                            </td>
                          </tr>
                        </table>
    </asp:Panel>loginout1的页面    
         protected void Page_Load(object sender, EventArgs e)
         {
            // Session.Abandon();
             if (FormUtil.GetCookieString("EMail") != "")
             {
                 Response.Cookies["EMail"].Expires = DateTime.Now.AddDays(-1);
             }
             else
             {
                 Response.Cookies["Mail"].Expires = DateTime.Now.AddDays(-1);
             }
             FormsAuthentication.SignOut();
             Response.Redirect("index.aspx");       
        }