web应用程序的SqlServer的安全考虑
2007-03-14 12:30
330 查看
不知道大家在web程序中使用的数据库账号都是什么权限,反正我一直都用的是数据库的所有者(比用sa的人要清醒一点)。
前几天,网站程序出现了一个小故障,经过检查才发现存储过程被改动了。这个事件在次把安全问题 摆到了桌面。我们到底要等到入侵者做到什么程度才会考虑数据库的安全问题呢?
首先,用数据库所有者这个账号连接,有如下权限:
1、查询
2、创建、更新、删除记录
3、创建、更新、删除表
4、创建、更新、删除视图和存储过程
而我们网站的大多数应用只需要:
1、查询表和视图
2、创建、更新、删除记录
3、执行存储过程
那么我们网站使用的数据库登录到底应该是什么角色,应该具有什么权限呢?
1、public ,这是必须的。
2、db_dataReader 。读取记录和执行查询语句。
3、db_dataWriter。 插入、更新和删除记录。
这里缺少一个执行存储过程的角色,只能手动为所有存储过程加上当前登录执行的权限。如果一个库的存储过程很多,则可以用下面这个存储过程来批量加上这个权限:
CREATE procedure sp_GrantProce(@username varchar(40))
as
begin
declare @user varchar(100),@name varchar(100)
declare t_cursor cursor for
select user_name(uid) as users,name from sysobjects where (xtype='P' or xtype='X') and status>0
open t_cursor
fetch next from t_cursor into @user,@name
while @@fetch_status=0
begin
exec('grant execute on '+@user+'.'+@name+' to '+@username)
fetch next from t_cursor into @user,@name
end
close t_cursor
deallocate t_cursor
end
然后执行这个存储过程,并带上你将要加上存储过程执行权限的登录名称即可。
前几天,网站程序出现了一个小故障,经过检查才发现存储过程被改动了。这个事件在次把安全问题 摆到了桌面。我们到底要等到入侵者做到什么程度才会考虑数据库的安全问题呢?
首先,用数据库所有者这个账号连接,有如下权限:
1、查询
2、创建、更新、删除记录
3、创建、更新、删除表
4、创建、更新、删除视图和存储过程
而我们网站的大多数应用只需要:
1、查询表和视图
2、创建、更新、删除记录
3、执行存储过程
那么我们网站使用的数据库登录到底应该是什么角色,应该具有什么权限呢?
1、public ,这是必须的。
2、db_dataReader 。读取记录和执行查询语句。
3、db_dataWriter。 插入、更新和删除记录。
这里缺少一个执行存储过程的角色,只能手动为所有存储过程加上当前登录执行的权限。如果一个库的存储过程很多,则可以用下面这个存储过程来批量加上这个权限:
CREATE procedure sp_GrantProce(@username varchar(40))
as
begin
declare @user varchar(100),@name varchar(100)
declare t_cursor cursor for
select user_name(uid) as users,name from sysobjects where (xtype='P' or xtype='X') and status>0
open t_cursor
fetch next from t_cursor into @user,@name
while @@fetch_status=0
begin
exec('grant execute on '+@user+'.'+@name+' to '+@username)
fetch next from t_cursor into @user,@name
end
close t_cursor
deallocate t_cursor
end
然后执行这个存储过程,并带上你将要加上存储过程执行权限的登录名称即可。
相关文章推荐
- 数据库管理——安全管理——识别SQLServer中空密码或者弱密码的登录名
- ASP.NET安全问题--创建安全的Web应用程序
- 3G建设要全面考虑安全、节能与环保
- 关于web应用程序安全的思考(修改版)
- 通达OA 涉及到财务资金工作流应用的安全考虑
- Effective Java(优先考虑类型安全的异构容器、用enum代替int常量)
- Effective Java(优先考虑类型安全的异构容器、用enum代替int常量)
- 六步实现WEB应用程序整体安全
- 出于安全考虑,office outlook禁止对潜在不安全因素的附件访问,如何解决
- 首席技术官应该考虑的网络安全问题 IT大咖说 - 大咖干货,不再错过
- NET 应用架构指导 V2 学习笔记(十五) 数据访问层指导 技术、性能、安全、部署、以及设计步骤考虑
- 动态注册broadcast的安全考虑
- 入门读物(2) – WEB应用程序的安全 (www.team509.com)
- web目录下不应该存在多余的程序(安全考虑)
- 无论是从子孙后代的安全考虑,还是从经济效益着想,全世界都应当把核电转换为以矿物为燃料的火电,这是刻不容缓的当务之急
- 数据库设计中的安全考虑
- ASP.NET安全问题-- 创建安全的Web应用程序
- 黄聪:wordpress前台自定义用户,调用wp_editor上传附件提示【抱歉,出于安全的考虑,不支持此文件类型】错误。
- Spring Boot actuator框架的一些安全考虑
- 优先考虑类型安全的异构容器