日期:2014-05-18  浏览次数:20507 次

请问一下这个类是做什么的?
//CleanString.cs文件
//问下大家这个类是用来干什么的?

using   System;

//using   System.Text;

namespace   SCard
{
///   <summary>
///   CleanString   的摘要说明。
///   </summary>
public   sealed   class   CleanString
{

public   static   string   htmlInputText(   string   inputString   )//HTML过滤输入字符串
{
if   ((inputString   !=   null)   &&   (inputString   !=   String.Empty   ))
{
inputString   =   inputString.Trim();
inputString   =   inputString.Replace( " ' ", "&quot; ");
inputString   =   inputString.Replace( " < ", "&lt; ");
inputString   =   inputString.Replace( "> ", "&gt; ");
inputString   =   inputString.Replace( "   ", "&nbsp; ");
inputString   =   inputString.Replace( "\n ", " <br> ");
return   inputString.ToString();
}
return   " ";
}

public   static   string   htmlOutputText(   string   inputString   )//HTML还原字符串
{
if   ((inputString   !=   null)   &&   (inputString   !=   String.Empty   ))
{
inputString   =   inputString.Trim();
inputString   =   inputString.Replace( "&quot; ", " ' ");
inputString   =   inputString.Replace( "&lt; ", " < ");
inputString   =   inputString.Replace( "&gt; ", "> ");
inputString   =   inputString.Replace( "&nbsp; ", "   ");
inputString   =   inputString.Replace( " <br> ", "\n ");
return   inputString.ToString();
}
return   " ";
}

}
}

------解决方案--------------------
为了防脚本攻击,.net在页面验证时不允许一些字符输入提交到数据库,这段程序是转换用的。
------解决方案--------------------
分两个函数,一个是把文本框中输入的字符转义的。目的应该是存储到数据库中的
一个是,把存储的字符串取出来后,在转义回来,显示在文本框里的。
------解决方案--------------------
类似于这个csdn的回帖录入框( <TextArea> ),它获取的文本值将来要用html显示出来,就需要转换;或者转换之后又需要重新转回来再用TextArea编辑。


不过这个转换其实太简单了,丢了很多东西。

你看csdn的这个录入框也会把录入的格式在显示时变成错位的格式。
------解决方案--------------------
对于不支持HTML的文本内容可以用这个来编码和解码。
这样如果是 <br> ,在显示的时候就不会当成是个回车,而是仍然显示为 <br>
这样对于XSS(跨站点脚本)攻击是一个非常好的防范手段。

当然,编码后显示的时候也不会因为含有HTML代码破坏了页面布局