易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server2005SQLCLR代码安全之权限

一、 SQLCLR权限集级别
 
  当你使用CREATE ASSEMBLY语句把一个程序集加载到一个数据库中时,SQL Server提供了三种权限集级别:SAFE,EXTERNAL_ACCESS和UNSAFE。这些权限集形成如图3和图5(均请参考第二篇)所示的 AppDomain策略级别。
 
  下面是一个典型的语句,它实现安装位于FileLoader.dll文件内的一个程序集,并且赋予它EXTERNAL_ACCESS权限集。
 
CREATE ASSEMBLY FileAccess
from 'E:FileLoader.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
 
  在代码执行时,每一种权限集级别都授予该代码一组不同的CAS许可权集。下面让我们开始讨论在每一级上授予的特定许可权。
 
  (1) SAFE
 
  SAFE是默认的权限集。它仅授予足够的许可权来执行代码,实现不要求存取外部资源的内部计算以及存取在宿主SQL Server实例中的数据和对象。注意,SAFE代码不能存取外部的资源,因此它不能读取或写磁盘文件,不能存取任何其它SQL Server实例,或读取或写注册表。而且,该代码也必须被检验为类型安全的,这将有助于避免各种包括缓冲区溢出在内的攻击。
 
  SAFE代码是更可靠和安全的SQLCLR代码。它能够实现用T-SQL书写的代码在数据库和服务器实例内所能实现的几乎一样的功能。它能够授予如表格1所列举的CAS许可权。从表格1中可见,该代码能够运行和读取宿主SQL Server实例中的对象和数据-借助于一种特定形式的ADO.NET连接串,或者是"context connection=true"或者是"context connection=yes"来实现。任何其它连接串都可能会导致某种安全异常。
 
  表格1:授予给SAFE程序集的权限集。
 
权限 类型 限制
SecurityPermission 受限制 执行
SqlClientPermission 受限制 不能是空口令,只能使用上下文连接串
 
  授予给一个程序集的结果权限集是列举于表格1中的许可权权限集与来自企业、机器和用户权限集的交集。因为这些级别默认会拥有所有的许可权,所以程序集仅接受列举于表格1中的权限。注意,请确保你一定要理解这些权限。
 
  (2) EXTERNAL_ACCESS
 
  与SAFE相比,EXTERNAL_ACCESS权限集允许有限制地存取存在于 SQL Server实例外部的资源-包括磁盘文件,在其它SQL Server实例中的数据和对象,环境变量和注册表的一些部分。存取这些其它资源通常是在SQL Server服务帐户的安全上下文中进行的,但是,该代码能够模拟其它用户进


相关文档:

sql经典语句

SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname ......

sql生日提示

根据生日的xx月xx日查找在$checkDate计算,$before日后生日的客户:
$checkDate为YYYY-MM-DD
WHERE substring(ADDDATE( '$checkDate', $before ),6,10)=substring(DATE_FORMAT(birthday,'%Y-%m-%d'),6,10)
$dates 天内生日的客户未考虑到平年、闰年::
   $sql.=" (dayofyear( birthday )-dayofyear( ......

SQL 按组别过滤指定条件的首行记录

源贴:http://topic.csdn.net/u/20100417/19/ebdc216a-acc9-4e04-80f3-dbada0b4f3fe.html?74846
数据类型:
Code char(6)
CreateTime datetime
Price float
Status bit
数据如下:
Code       CreateTime        Price Status
031002 2008-10-17 ......

Java如何防sql注入

采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
          String sql= "select * from users where username=? and password=?;
          PreparedStatement preState = conn.prepare ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号