为.net开发者提供的一份关于存储过程的评论
2006-07-23 11:17:50 来源:WEB开发网在规范用户访问信息方面,它可以提供给用户经过授权的指定信息而不是那些非授权的表的内容。除了存储过程可以接受用户输入而动态改变数据显示的功能外,你可以将他想象为SQL Server中的视图(如果你对视图比较熟悉的话)。
它还可以帮助你逃离代码的安全隐患。保护你免受一种叫做‘SQL注射’的攻击,这种攻击主要会在你的合法输入参数中添加如AND 或者 OR的操作符。存储过程还会隐藏事务逻辑的实现以减少你的应用程序泄密的危险。因为事务逻辑非常重要,这种信息被认为是知识产权。
除此之外,使用存储过程时,你可以利用ADO.net提供的SqlParameter类,为存储过程提供数据类型正确的参数。这也为我们提供了一种用来验证用户输入参数的方法,同时也是深度防范策略的一部分。注意,在单独的查询语句中,参数同样可以起到缩小用户输入范围的作用。
但是也请注意,使用存储过程来提高安全性时,如果不作好安全设置以及没有良好的编码习惯,仍旧会使你暴露在进攻之下。在创建SQL Server角色和分配权限时,如果不注意就会导致用户访问到他们不该看到的数据。不要绝对的认为使用存储过程可以彻底避免''SQL注射''攻击,在输入参数后面追加一些数据操纵语言(DML)一样可以进行攻击。
因此,使用参数来验证输入数据的类型也不是十分稳妥,无论是在一条T-SQL语句中还是在存储过程中,所有用户输入的数据,尤其是那些文本数据,应该在传送到数据库之前采用额外的验证。
存储过程适合我么?
哦,也许是的。让我们回顾一下它的优点:
- 可以减少网络传输数据量以提高性能
- 提供方便的单点维护
- 将事务规则提取出来以提高一致性和安全性
- 减少通过输入表单进行的攻击以提高安全性
- 加强执行序列的重用性
如果你的系统环境允许你采用如上描述的存储过程所提供的优点,那么我强烈建议采用它。它提供了一个很好的工具用来改进系统中的数据操作。另一方面,如果要求可移植性,并大部分采用非T-SQL的操作,或者你有一个不稳定的数据库架构就会抵消上面的那些优点,那么你应该考虑其它的方案。
- ››开发者眼中的Windows Phone和Android
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››开发者眼中的iPhone与Android
- ››Netmsg局域网聊天程序
- ››开发者或想使用的10个Android2.2新特性
- ››NetAirus指控苹果iPhone侵犯其专利
- ››Netflix 在线影视播放程序将登陆 iPhone
- ››Net中各种不同的对象创建方式的速度差异
- ››NetNewsWire 功能简单 界面快速 Reader 浏览器
更多精彩
赞助商链接