- 论坛徽章:
- 0
|
用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录?
txfy,我的要求正是这样的。公司有个网页用ASP查询ORACLE数据库,因为ASP安全性差,脚本里用户名密码又写得一清二楚,如果有人获得网页脚本就能登录到ORACLE操作整个表的数据。所以我将其从SQL语句对表直接查询改为存储过程查询,并新建一个用户仅具有对该存储过程的执行权限,希望能将表对用户屏蔽。这样会安全一点,执行效率也会提高。
具体情况如下:
用户名:cal,管理员权限,原有表和存储过程都是以cal建立的,因此很不安全
表:table_a,table_b,table_c等等
新建存储过程proc,可以读取上述几张表,并返回结果集
新建用户名readonly,希望其可以执行proc,但不能对任何表进行SQL操作。
运行页面脚本:
CMD.ActiveConnection=conn1
CMD.CommandText="proc"
CMD.CommandType=4
CMD.Parameters.Append CMD.CreateParameter("v_table",200,1,20,tbname)
set rs1=CMD.Execute()
系统报错:[Oracle][ODBC][Ora]ORA-04043: 对象 proc 不存在
rollingpig,执行您给的这个语句是否意味着所有用户都可以将该存储过程视为自己的对象?我执行了这个命令,但运行页面的时候还是提示我对象不存在,如果用户名改成存储过程的属主就能正常运行了。我将页面脚本从CMD.CommandText="proc"改成CMD.CommandText="cal.proc",系统就提示cal对象不存在。 |
|