⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 538.html

📁 关于jsp的一些好文章 主要介绍一些关于JSP的应用技巧方面的东西
💻 HTML
字号:

<STYLE type=text/css>
<!--
body,td { font-size:9pt;}
hr { color: #000000; height: 1px}
-->
</STYLE>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD><TITLE>精选文章 >> Oracle 专栏 >> 在ORACLE中利用角色增强应用系统安全性</title>
</head>
<body >

<p><IMG SRC="../image/jsp001_middle_logo.gif" WIDTH="180" HEIGHT="60" BORDER=0 ALT=""></p>

<table width=100% bgcolor="#cccccc" align=center cellpadding="2" cellspacing="0" border=1 bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#EFF8FF"><td>
<a href=http://www.jsp001.com/list_thread.php?int_attribute=2>精选文章</a>
>> <a href=http://www.jsp001.com/list_thread.php?forumid=20&int_attribute=2>Oracle 专栏</a>
>> 在ORACLE中利用角色增强应用系统安全性 [<a href=http://www.jsp001.com/forum/showthread.php?goto=newpost&threadid=538>查看别人的评论</a>]<br>

<hr><p>由 macro 发布于: 2001-02-26 12:41</p><p> </p><p>----数据安全性是指保护数据以防止非法的使用,避免造成数据有意或无意的丢失、泄露或破坏。由于数据库系统中集中存放有大量的数据,这些数据又为众多用户所共享,所以安全约束是一个极为突出的问题。 <br><br><br>----ORACLE数据库系统在实现数据库安全性管理方面采取的基本措施有: <br><br><br>通过验证用户名称和口令,防止非ORACLE用户注册到ORACLE数据库,对数据库进行非法存取操作。 <br><br><br>授予用户一定的权限,例如CONNECT,RESOURCE等,限制用户操纵数据库的权力。 <br><br><br>授予用户对数据库实体(如表、表空间、过程等)的存取执行权限,阻止用户访问非授权数据。 <br><br><br>提供数据库实体存取审计机制,使数据库管理员可以监视数据库中数据的存取情况和系统资源的使用情况。 <br><br><br>采用视图机制,限制存取基表的行和列集合。 <br><br>----在实际应用中,许多系统往往采用假用户(即非数据库用户)身份来管理,而真实用户的身份和登录口令就隐藏在应用系统中,或经过各种压缩加密等处理的配置文件中。但这样往往留下隐患,只要从分析应用程序入手,最终会分析出系统使用的数据库用户和口令,那么其安全性也就消失了。另一方面,系统代码是程序员写出来的,如果程序员有破坏意图,这种模式没有一丝的安全,因为他通过自己掌握的代码不经分析就轻而易举的获得登录用的数据库用户和口令。 <br><br>----而采用真实数据库用户,存在着权限分配上的难度,特别是用户数和应用表数都很多时,这时必然要使用角色来管理应用权限的分配。当然不能直接将权限或角色直接分配给用户,否则用户可以不同过应用系统,而采用SQL*PLUS等前端工具进入系统,进行一些没有经过应用系统检查的操作,产生的结果可能不符合应用逻辑。 <br><br><br>----我们在实践中发现,可以采用另一种方式利用角色功能,来防止上面出现的安全“漏洞”。在这种方式下,用户采用自己的标识和口令注册,但在未得到授权的角色前,是没有操纵数据库的任何权限。而授权用户使用的角色是埋在应用程序中的,只有应用程序才知道角色的名称和口令,从而激活角色,使用户拥有相应的权限。在应用系统之外,用户可以连接到ORACLE,但没有激活相应的角色,他是不能做任何事情的,而开发人员不知道用户的标识和口令,他没有办法登录到ORACLE,即使他能够推算出角色的标识和口令。 <br><br><br>----下面根据一个例子给出具体的实现过程: <br><br><br>----我们假设用户xiaoli在工作中能够对工资表account.paytable(account是表paytable的拥有者)有查询和更新的权限,而这些权限我们不直接授予xiaoli,而是构造一个角色(比如考勤员checkerrole),这个角色恰好适合于xiaoli,再将角色授予xiaoli,但角色在激活时需要口令,该口令不对xiaoli公开。每个用户需要一个缺省的角色,是用户连接到ORACLE时的缺省角色。这个角色只有CONNECT权限,我们假为defaultrole。 <br><br><br>----下面给出具体的操作SQL: <br><br><br>(1)设定各种角色,及其权限 <br><br>CREATE ROLE checkerrole IDENTIFIEDBYxm361001; <br><br>CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole; <br><br>GRANTSELECT,UPDATEONaccount.paytableTOcheckerrole; <br><br>GRANTCONNECTTOdefaultrole; <br><br>(2)创建用户 <br><br>CREATEUSERxiaoliIDENTIFIEDBYxiaoli; <br><br>(3)授权 <br><br>GRANTcheckerroleTOxiaoli; <br><br>GRANTdefaultroleTOxiaoli; <br><br>(4)设定用户缺省的角色 <br><br>ALTERUSERxiaoliDEFAULTROLEdefaultrole; <br><br>(5)注册过程 <br><br>CONNECTxiaoli/xiaoli@oracle <br><br>此时用户只有其缺省角色的权限。 <br><br>(6)激活角色 <br><br>SETROLEcheckerroleIDENTIFIEDBYxm361001; <br><br><br>----操作成功后,xiaoli拥有checkerrole的权限。 <br><br><br>----这里的角色和口令是固定的,在应用系统中可以由应用管理人员自行设置则更为方便安全。 <br><br><br>----上面给出的是在SQL*PLUS下的操作过程,在实际中还是要与应用系统联系在一起。我们不讨论用户和角色的创建怎样在应用开发语言中的实现过程,在这里给出用户登录时的POWERBUILDER代码,理解了这个例子,前者的实现也不难。 <br><br><br>Transactiongtr_Oracle7 <br><br>gtr_Oracle7=createTransaction <br><br>gtr_Oracle7.DBMS="O73" <br><br>gtr_Oracle7.database="" <br><br>gtr_Oracle7.UserID=ls_UserID <br><br>//通过对话框取得的用户标识 <br><br>gtr_Oracle7.DBPass=ls_Passwd <br><br>//通过对话框取得的用户口令 <br><br>gtr_Oracle7.LogID=ls_UserID <br><br>gtr_Oracle7.LogPass=ls_Passwd <br><br>gtr_Oracle7.ServerName="@oracle" <br><br>//在SQL*NET中创建的别名 <br><br>gtr_Oracle7.DBParm="" <br><br>ConnectUsinggtr_Oracle7; <br><br>ifgtr_Orale7.sqlcode=-1then <br><br>MessageBox("错误","没有注册到数据库系统!") <br><br>return-1 <br><br>endif <br><br>//ls_Role和ls_RolePasswd为从配置文件中 <br><br>或通过其它途径获得的用户的角色名和口令 <br><br>ExecuteImmediate"SETROLE"+ls_Role+ <br><br>"IDENTIFIEDBY"+ls_RolePasswd <br><br>Usinggtr_Oracle7; <br><br>Ifgtr_Oracle7.sqlcode&lt;&gt;0then <br><br>MessageBox("错误","没有激活相应的数据库系统角色!") <br><br>DisconnectUsinggtr_Oracle7; <br><br>return-1 <br><br>Endif <br><br>Return1//成功注册并激活角色!<br><br><br>__________________<br><br>谢谢你抽时间看我的发言,<br><br>Macro Zeng<br><br>==================================<br><br>我正在学习 Oracle ,坚持每天写读书笔记</p></td>
  </tr>
</table>

<p>
<CENTER><a href="http://www.jsp001.com/forum/newreply.php?action=newreply&threadid=538">点这里对该文章发表评论</a></CENTER>
<p>该文章总得分是 <font color=red>5</font> 分,你认为它对你有帮助吗?
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=538&intVote=4","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>非常多</a>](<font color=red>1</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=538&intVote=2","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>有一些</a>](<font color=red>1</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=538&intVote=1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>无帮助</a>](<font color=red>1</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=538&intVote=-1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>是灌水</a>](<font color=red>2</font>) </p>
<script language="javascript" src="http://www.jsp001.com/include/read_thread_script.php?threadid=538"></script>
<p><CENTER>
Copyright &copy; 2001 - 2009 JSP001.com . All Rights Reserved <P>

<IMG SRC="../image/jsp001_small_logo.gif" WIDTH="85" HEIGHT="30" BORDER=0 ALT="">
</CENTER></p>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -