一、如何让指定用户可以对数据表进行Truncate操作
Truncate在对大表全删除操作时,会明显比Delete语句更快更有效,但是因为它不需要存放日志,并且一定是全表删除,所以造成数据的不可恢复性。也说明了它的危险性。
但是,执行Truncate需要有表拥有者、系统管理员、db_owner、db_ddladmin这些里面的其中一种高权限角色才能执行。
对此,可以使用2005版本之后的EXECUTE AS 表达式来实现权限内容的切换:
1. 切换登录:EXECUTE AS LOGIN
2. 切换用户:EXECUTE AS USER
3. 切换执行权限:EXECUTE AS owner/’user name’,利用高用户权限来执行作业。此步骤可以在低权限实体下执行高权限操作,也能避免安全性漏洞。
另外,只有EXECUTE AS Caller可以跨数据库执行,而其他方式进行的权限切换仅限制于本数据库。
注意:执行EXECUTE AS USER模拟使用者切换时,需要先获得被模拟用户的授权。可以使用REVERT来还原执行内容前的原始身份。
二、如何避免SQL注入的攻击
对于数据库应用程序,无论是那种DBMS,SQL注入都是一大隐患。
要避免SQL注入,应该最起码做到以下几点:
1.检查输入的数据,应用程序不要相信用户输入的数据,必须经过检验后才能输入数据库。要排除%,--等特殊符号。
2.避免果度暴露错误信息。建议可以转换成Windows事件或者是转换成应用程序内部错误信息。
3.使用参数化查询或者存储过程
注意:动态SQL是造成SQL注入的主要原因
来源:csdn
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
打赏
扫码打赏,您说多少就多少