关于存在Rich Text Editor的页面应该如何处理?
2010-04-01 23:33
197 查看
如果页面有富文本编辑器的控件的,那么必然会导致有类的HTML标签提交回来。在这种情况下,我们不得不将validateRequest="false"。那么安全性怎么处理?如何在这种情况下最大限度的预防跨站脚本攻击呢?
根据微软的建议,我们应该采取安全上称为“默认禁止,显式允许”的策略。
首先,我们将输入字符串用 HttpUtility.HtmlEncode()来编码,将其中的HTML标签彻底禁止。
然后,我们再对我们所感兴趣的、并且是安全标签,通过Replace()进行替换。比如,我们希望有""标签,那么我们就将""显式的替换回""。
示例代码如下:
以下是引用片段:
void submitBtn_Click(object sender, EventArgs e)
...{
// 将输入字符串编码,这样所有的HTML标签都失效了。
StringBuilder sb = new StringBuilder(
HttpUtility.HtmlEncode(htmlInputTxt.Text));
// 然后我们选择性的允许<b> 和 <i>
sb.Replace("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());
}
这样我们即允许了部分HTML标签,又禁止了危险的标签。
根据微软提供的建议,我们要慎重允许下列HTML标签,因为这些HTML标签都是有可能导致跨站脚本攻击的。
以下是引用片段:
<applet>
<body>
<embed>
<frame>
<script>
<frameset>
<html>
<iframe>
<img>
<style>
<layer>
<link>
<ilayer>
<meta>
<object>
可能这里最让人不能理解的是<img>。但是,看过下列代码后,就应该明白其危险性了。
以下是引用片段:
<img src="javascript:alert('hello');">
<img src="java script:alert('hello');">
<img src="java script:alert('hello');">
通过<img>标签是有可能导致Javascript执行的,这样攻击者就可以做他想伪装的任何事情。
关于<style>也是一样:
以下是引用片段:
<style TYPE="text/javascript">...
alert('hello');
</style>
【转自www.bitsCN.com】
根据微软的建议,我们应该采取安全上称为“默认禁止,显式允许”的策略。
首先,我们将输入字符串用 HttpUtility.HtmlEncode()来编码,将其中的HTML标签彻底禁止。
然后,我们再对我们所感兴趣的、并且是安全标签,通过Replace()进行替换。比如,我们希望有""标签,那么我们就将""显式的替换回""。
示例代码如下:
以下是引用片段:
void submitBtn_Click(object sender, EventArgs e)
...{
// 将输入字符串编码,这样所有的HTML标签都失效了。
StringBuilder sb = new StringBuilder(
HttpUtility.HtmlEncode(htmlInputTxt.Text));
// 然后我们选择性的允许<b> 和 <i>
sb.Replace("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());
}
这样我们即允许了部分HTML标签,又禁止了危险的标签。
根据微软提供的建议,我们要慎重允许下列HTML标签,因为这些HTML标签都是有可能导致跨站脚本攻击的。
以下是引用片段:
<applet>
<body>
<embed>
<frame>
<script>
<frameset>
<html>
<iframe>
<img>
<style>
<layer>
<link>
<ilayer>
<meta>
<object>
可能这里最让人不能理解的是<img>。但是,看过下列代码后,就应该明白其危险性了。
以下是引用片段:
<img src="javascript:alert('hello');">
<img src="java script:alert('hello');">
<img src="java script:alert('hello');">
通过<img>标签是有可能导致Javascript执行的,这样攻击者就可以做他想伪装的任何事情。
关于<style>也是一样:
以下是引用片段:
<style TYPE="text/javascript">...
alert('hello');
</style>
【转自www.bitsCN.com】
相关文章推荐
- 分布式下的爬虫Scrapy应该如何做-关于动态内容js或者ajax处理(2)
- (9)分布式下的爬虫Scrapy应该如何做-关于ajax抓取的处理(一)
- 关于IO流的输入输出流同时存在应如何处理异常?
- *关于Iframe内嵌页面右边总是有空白滚动条的处理
- 关于struts如何在action中实现多个处理方法
- WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理
- 关于短信的读取以及新短信到达时如何触发事件去处理自己的逻辑
- 404页面返回状态码应该如何设置呢
- 关于phpcms v9 如何在首页调用单网页面内容的代码
- 如何在字符串中加入回车换行,tab字符(关于字符串处理)
- 关于返回前面的页面。如何两者兼得,自问自答
- [求教] - 关于ASP中如何对数据表字段中所包含的特殊字符 ' 与 " 进行转义处理?
- JAVA后台 关于如何从后台传递信息在jsp前端页面显示
- Adding a Rich Text Editor to your Rails Application
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- 如何一个jsp页面处理多个form表单
- javascript中如何判断一个元素在页面中是否存在(转)
- 在 WPA2 安全协议存在漏洞的情况下,我们应该如何保护自己?
- 关于页面上输入框中 空格 、0 、NULL 的处理 示例
- Hadoop源码解析之: TextInputFormat如何处理跨split的行