数据提交的是后为什么要对字符串进行JS,HTML,CSS过滤
为什么呢? --------------------编程问答-------------------- 防止 用户提交一个 JS,HTML,CSS比如说 用户评论的时候 在文本框里面 输入一个 <button ID="button " type="button ">评论</button>
这样你数据读取到页面 评论页面就会显示一个button 很难看的 --------------------编程问答-------------------- 严重的话 提交一个 js 脚本 让你狂打开页面 --------------------编程问答-------------------- 防止注入啊,
如果别人给你注入一下,然后你又没有防止,就会出现易做图烦的
比如给你注入一个脚本,跳转到百度的那么,那么一打开网页就跳到百度了,还怎么看你的网站啊 --------------------编程问答-------------------- 哦,这样的啊 --------------------编程问答-------------------- 对呀,你想想,本来画的挺好的一个页面,结果人家给你弄进来两个div,结果导致整个页面的样式乱了,多麻烦啊
又或者是数据库的注入,影响安全 --------------------编程问答--------------------
。。。页面提交,如何注入? --------------------编程问答-------------------- insert可以进行SQL injection? --------------------编程问答-------------------- 不过滤要出错。。有些脚本。。
你在文本框里输入script 在提交 看看啥情况了。。
HTML转换。。。
/// <summary>
/// 插入SQL时替换字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Encode(string str)
{
str = str.Replace("'", "''");
str = str.Replace("\"", """);
str = str.Replace("<", "<");
str = str.Replace(">", ">");
str = str.Replace("\n", "<br>");
str = str.Replace("“", "“");
str = str.Replace("”", "”");
return str;
}
/// <summary>
/// 取SQL值时还原字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Decode(string str)
{
str = str.Replace("”", "”");
str = str.Replace("“", "“");
str = str.Replace("<br>", "\n");
str = str.Replace(">", ">");
str = str.Replace("<", "<");
str = str.Replace(""", "\"");
str = str.Replace("''", "'");
return str;
}
用这个来替换
--------------------编程问答-------------------- 可是我输入<script>alert('地地道道)</script>的时候,提交成功,但是内容是空的 可是我的文本框输入要求是非空的 --------------------编程问答-------------------- 这是过滤的源码
System.Text.RegularExpressions.Regex regex1 = new System.Text.RegularExpressions.Regex(@"<script[\s\S]+</script *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex2 = new System.Text.RegularExpressions.Regex(@" href *= *[\s\S]*script *:", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex3 = new System.Text.RegularExpressions.Regex(@" no[\s\S]*=", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex4 = new System.Text.RegularExpressions.Regex(@"<iframe[\s\S]+</iframe *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex5 = new System.Text.RegularExpressions.Regex(@"<frameset[\s\S]+</frameset *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex6 = new System.Text.RegularExpressions.Regex(@"\<img[^\>]+\>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex7 = new System.Text.RegularExpressions.Regex(@"</p>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex8 = new System.Text.RegularExpressions.Regex(@"<p>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex regex9 = new System.Text.RegularExpressions.Regex(@"<[^>]*>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
html = regex1.Replace(html, ""); //过滤<script></script>标记
html = regex2.Replace(html, ""); //过滤href=javascript: (<A>) 属性
html = regex3.Replace(html, " _disibledevent="); //过滤其它控件的on...事件
html = regex4.Replace(html, ""); //过滤iframe
html = regex5.Replace(html, ""); //过滤frameset
html = regex6.Replace(html, ""); //过滤frameset
html = regex7.Replace(html, ""); //过滤frameset
html = regex8.Replace(html, ""); //过滤frameset
html = regex9.Replace(html, "");
html = html.Replace(" ", "");
html = html.Replace("</strong>", "");
html = html.Replace("<strong>", "");
return html; --------------------编程问答-------------------- 有人知道为什么会出现这种情况吗?
补充:.NET技术 , ASP.NET