HTML编码的好处,就我理解,一是防浏览器渲染,按用户输入的格式输出,二是可以一定程度防黑客的SQL注入。
我是这么做的:数据表中定义了一个varchar[7000]的字段,先把用户输入的内容HTML编码,然后再写入库。可是我发现,如果输入的内容是文字,编码前后相差无几,如果输入的内容是代码(如HTML、CSS等)的话,编码后的内容就大得很多。varchar[7000]的字段用来存汉字的话倒还能存3000多,一般用户也差不多够用了,但存代码的话,确实存不了多少。
我不懂SQL注入的原理,所以我先编码后写入。我在网上看见有人这样说:不论是什么内容,写入数据库都是安全的。这话是正确的吗?如果正确,那么就没必要先编码后写入,最好是写入原文,浏览器请求时再编码输出,这样自然就能存入更多的内容。
请教一下大侠们,你们是先编码再写入库呢,还是原文入库、输出前编码?
还有一个小小的问题,如果先写入原文的话,收到浏览请求后,许多条记录,输出前怎样编码啊?小菜我只会一个的,如string a="内容" string b=Server.HtmlEncode(a),多条记录一起输入是不是要用到遍历啊,遍历占用资源多不多?怎样实现遍历编码输出呢?
不是舍不得,真没分了。我是个菜鸟,请大侠们指点一下,很感谢啊!
我是这么做的:数据表中定义了一个varchar[7000]的字段,先把用户输入的内容HTML编码,然后再写入库。可是我发现,如果输入的内容是文字,编码前后相差无几,如果输入的内容是代码(如HTML、CSS等)的话,编码后的内容就大得很多。varchar[7000]的字段用来存汉字的话倒还能存3000多,一般用户也差不多够用了,但存代码的话,确实存不了多少。
我不懂SQL注入的原理,所以我先编码后写入。我在网上看见有人这样说:不论是什么内容,写入数据库都是安全的。这话是正确的吗?如果正确,那么就没必要先编码后写入,最好是写入原文,浏览器请求时再编码输出,这样自然就能存入更多的内容。
请教一下大侠们,你们是先编码再写入库呢,还是原文入库、输出前编码?
还有一个小小的问题,如果先写入原文的话,收到浏览请求后,许多条记录,输出前怎样编码啊?小菜我只会一个的,如string a="内容" string b=Server.HtmlEncode(a),多条记录一起输入是不是要用到遍历啊,遍历占用资源多不多?怎样实现遍历编码输出呢?
不是舍不得,真没分了。我是个菜鸟,请大侠们指点一下,很感谢啊!
解决方案 »
- 发布后传到服务器提示,未能找到路径"XXXX"的一部分!
- VS2008中控件的链接数据库向导怎么没用了
- 紧急求助图片控件运行时不显示图片的问题
- 谁来讲讲反射?
- 急求: 请问大家做ASP.NET(C#)新闻系统时是如何处理新闻图片
- 模板列中放了两个控件,怎样调用这两个控件
- 关于ASP.NET中的缓存,我不知道对于我的要求,应该采用什么方式,高手支招!
- Excel编程问题~~~~~(在线等待)~~~
- [ASP学习]如何解决用ip地址访问本机需要输入帐户名?
- 请问哪有类似于微软的PassPort或CA用户认证的东东
- ASP.NET2.0中利用参数来读库
- 怎样将asp.net动态网页转换为html页面????
我对输出html不是很赞成,因为html是最终页面,修改很困难.而且很多动态信息加载比较困难.我现在使用的方法是输出xml,然后xsl加载css和js,通过js+xhr(也就是ajax)获取动态信息和提交访问记录.但是js跨平台很是问题,代码量也很大.我也正在考虑的改进方案有两种:
html的话,看过一个方法是添加一个隐藏的图片节点,类似<img src="recordvisiter.asp?article_id=10000">,来记录访问.
另一个还是基于xml,按传统方式在服务器端解析生成页面.比如article.asp?id=1000,我先找id=1000的xml文件,如果没有就创建然后解析输出.其他部分的动态信息就可以用服务器端的程序添加了.存储过程的,不懂.超长字串可以使用varchar(max)字段.(sql2005)