斗鸡眼其实与常人没什么不同,只是看事物的方法不同罢了,是将视线和注意力放在事物的某一点罢了。"但我
们在项目的总体开发上却不能这样,要不然对项目的可行性分析和总体的考虑还有什么意义呢?前面我说的我的那几位同
学他们的后台数据库也多是SQL Server和Oracle。但他们并没有去发挥这些产品的特性。比如说他们在SQL Server上建立
了一个员工的信息数据库,其中有一个表(member_info)用于保存员工的信息。为了获得该表的数据他们在app Server端写
了如下的语句:
conn.ConnectionString="Driver={SQL Server};Server=sev1;uid=user_name;
pwd=password;database=member_database"
conn.open
rs.ActiveConnection=conn
strSQL="select member_ID,address,fri_name,lsr_name…… from member_info
where……";
rs.open strSQL,conn,,,adCmdText
好了,目的是达到了,但重要的信息也都泄露了。用户名(user_name)、密码(password)、连接的数据库服务器(sev1)、
数据库名(member_database)、该数据库下的表名(member_info)、甚至该表的各个Column名都知道了,是的,asp是不允许
看到原代码的。但asp的漏洞大家都知道的。若它用了SSL还好,否则就是整裸体一个了。也许你会说:"我可以只给
user_name用户Grant一个最小的权限,那它就不能为所欲为了,是的,但一个Select权限总得有吧。若该表上有很多的敏
感信息,而你只想让用户看到部分的Column那怎么办呢?那你就一个Column一个Column的去赋予权限好了。但现在很多的
开发者对数据库的设计并不在行,有些又将开发的工作分给了不同的人做,那么在思想的统一上又出现了问题。所以根本
不会考虑很多的问题。我还见过有人在uid字段填个sa,在pwd字段填个""(NULL),哈,开发真的方便了,那我看你还是将
你的数据库设为"dbo use only "吧!·那我们用SQL Server和Oracle上都有的Stored Procedure来做呢?
Create Procedure usp_show_info
@memberID int
……
As
select member_ID,address,fri_name,lsr_name……
from member_info where……
我们仅给db_user一个Execute该Procedure的权限,那么它就只能执行该Procedure,对于表的权限它什么也没有。而且
Procedure是放在database端上的预
们在项目的总体开发上却不能这样,要不然对项目的可行性分析和总体的考虑还有什么意义呢?前面我说的我的那几位同
学他们的后台数据库也多是SQL Server和Oracle。但他们并没有去发挥这些产品的特性。比如说他们在SQL Server上建立
了一个员工的信息数据库,其中有一个表(member_info)用于保存员工的信息。为了获得该表的数据他们在app Server端写
了如下的语句:
conn.ConnectionString="Driver={SQL Server};Server=sev1;uid=user_name;
pwd=password;database=member_database"
conn.open
rs.ActiveConnection=conn
strSQL="select member_ID,address,fri_name,lsr_name…… from member_info
where……";
rs.open strSQL,conn,,,adCmdText
好了,目的是达到了,但重要的信息也都泄露了。用户名(user_name)、密码(password)、连接的数据库服务器(sev1)、
数据库名(member_database)、该数据库下的表名(member_info)、甚至该表的各个Column名都知道了,是的,asp是不允许
看到原代码的。但asp的漏洞大家都知道的。若它用了SSL还好,否则就是整裸体一个了。也许你会说:"我可以只给
user_name用户Grant一个最小的权限,那它就不能为所欲为了,是的,但一个Select权限总得有吧。若该表上有很多的敏
感信息,而你只想让用户看到部分的Column那怎么办呢?那你就一个Column一个Column的去赋予权限好了。但现在很多的
开发者对数据库的设计并不在行,有些又将开发的工作分给了不同的人做,那么在思想的统一上又出现了问题。所以根本
不会考虑很多的问题。我还见过有人在uid字段填个sa,在pwd字段填个""(NULL),哈,开发真的方便了,那我看你还是将
你的数据库设为"dbo use only "吧!·那我们用SQL Server和Oracle上都有的Stored Procedure来做呢?
Create Procedure usp_show_info
@memberID int
……
As
select member_ID,address,fri_name,lsr_name……
from member_info where……
我们仅给db_user一个Execute该Procedure的权限,那么它就只能执行该Procedure,对于表的权限它什么也没有。而且
Procedure是放在database端上的预
| 对此文章发表了评论 |
