编写安全的扩展存储过程
2007-05-15 09:27:06 来源:WEB开发网核心提示: 还有一点说明,为什么不使用Tls,编写安全的扩展存储过程(2),老实说,我考虑过使用的,SQL Server内部似乎使用了一个线程池,既然如此,因为其实代码是有一点问题的,假如一个用户调用xp_part_init,然后另一个用户也调用xp_part_init
还有一点说明,为什么不使用Tls,老实说,我考虑过使用的,因为其实代码是有一点问题的,假如一个用户调用xp_part_init,然后另一个用户也调用xp_part_init,注意我们的存储过程可是服务器端的,然后第一个用户调用xp_part_finalize,那么会怎样,他仍然可以正常使用xp_part_process,这倒无所谓,然而第一个用户调用两次xp_part_finalize,就能够影响第二个用户了,他的xp_part_process将返回错误。
使用Tls 似乎可以解决这问题,例如再添加一个tls_index变量,调用 TlsSetValue保存用户私人数据,TlsGetValue检索私人数据,当xp_part_init时,假如该私人数据为0,执行正常的初始化过程,(即上面的xp_part_init)执行成功后存储私人数据为1,假如是1,直接返回,xp_part_finalize时,假如私人数据为1,则执行正常的xp_part_finalize,然后设私人数据为0,假如是0,直接返回。
好像想法还是不错的,这样隔离了多个用户,安全性似乎提高了不少,然而事实是不可行的。因为Tls保存的并不是私人数据,而是线程本地变量,我们不能保证一个用户的多次操作都是用同一个线程执行的,这个由SQL Server自己控制,事实上我在查询分析器里多次执行的结果显示,SQL Server内部似乎使用了一个线程池。既然如此,那这种想法也只能作罢。
- ››安全的Win 8系统减肥攻略
- ››安全度过网站排名的四个时期技巧
- ››编写Linux定时处理程序
- ››编写Linux系统下Daemon程序的方法步骤
- ››安全第一 Windows 7五件应该知道的事
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››安全连接Internet-让ISA Server 2006做为企业中的...
- ››扩展WebSphere Portal V6个性化功能
- ››编写组件,使用JavaScript更新UpdatePanel
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››安全技巧 保护IP地址的五种超级方法
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
赞助商链接