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

📄 421.html

📁 Jsp精华文章合集,JSP方面各种知识介绍
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<br>表3 授权表范围列的大小写敏感性 <br>列<br>Host<br>User<br>Password<br>Db<br>Table_name<br>Column_name<br>大小写敏感性<br>No<br>Yes<br>Yes<br>Yes<br>Yes<br>No<br><br><br>2.2.2 查询访问验证<br>每次你发出一个查询,服务器检查你是否有足够的权限执行它,它以user、db、<br>tables_priv和columns_priv的顺序检查,知道它确定你有适当的访问权限或已搜索<br>所有表而一无所获。更具体的说:<br><br>服务器检查user表匹配你开始连接的记录以查看你有什么全局权限。如果你有并且它<br>们对查询足够了,服务器则执行它。 <br>如果你的全局权限不够,服务器为你在db表中寻找并将该记录中的权限加到你的全局<br>权限中。如果结果对查询足够,服务器执行它。 <br>如果你的全局和数据库级组合的权限不够,服务器继续查找,首先在tables_priv<br>表,然后columns_priv表。 <br>如果你在检查了所有表之后仍无权限,服务器拒绝你执行查询的企图。 <br>用布尔运算的术语,授权表中的权限被服务器这样使用:<br><br>user OR tables_priv OR columns_priv<br><br>你可能疑惑为什么前面的描述只引用4个授权表,而实际上有5个。实际上服务器是这<br>样检查访问权限:<br><br>user OR (db AND host) OR tables_priv OR columns_priv<br><br>第一个较简单的表达式是因为host表不受GRANT和REVOKE语句影响。如果你总是用<br>GRANT和REVOKE管理用户权限,你绝不需要考虑host表。但是其工作原理你用该知<br>道:<br><br>当服务器检查数据库级权限时,它对于客户查找db表。如果Host列是空的,它意味着<br>“检查host表以找出哪一个主机能访问数据库”。 <br>服务器在host表中查找有与来自db表的记录相同的Db列值。如果没有host记录匹配客<br>户主机,则没有授予数据库级权限。如果这些记录的任何一个的确有一个匹配连接的<br>客户主机的Host列值,db表记录和host表记录结合产生客户的数据库级权限。<br>然而,权限用一个逻辑AND(与)结合起来,这意味着除非一个给定的权限在两个表中<br>都有,否则客户就不具备该权限。以这种方式,你可以在db表中授予一个基本的权限<br>集,然后使用host表对特定的主机有选择地禁用它们。如你可以允许从你的域中的所<br>有主机访问数据库,但关闭了那些在较不安全区域的主机的数据库权限。<br><br>前面的描述毫无疑问使访问检查听起来一个相当复杂的过程,特别是你以为服务器对<br>你发出的每个查询进行权限检查,然而此过程是很快的,因为服务器其实不从授权表<br>对每个查询查找信息,相反,它在启动时将表的内容读入内存,然后验证查询用的是<br>内存中的副本。这大大提高了访问检查操作的性能。但有一个非常明显的副作用。如<br>果你直接修改授权表的内容,服务器将不知道权限的改变。<br><br>例如,如果你用一条INSERT语句向user表加入一个新记录来增加一个新用户,命名在<br>记录中的用户将不能连接服务器。这对管理员新手(有时对有经验的老手)是很困惑<br>的事情,当时解决方法很简单:在你改变了它们之后告诉服务器重载授权表内容,你<br>可以发一条FLUSH PRIVILEGES或执行mysqladmin flush-privileges(或如果你有<br>一个不支持flush-privileges的老版本,用mysqladmin reload。)。<br><br>2.2.3 范围列匹配顺序<br>MySQL服务器按一种特定方式排序符授权表中的记录,然后通过按序浏览记录匹配到来<br>的连接。找到的第一个匹配决定了被使用的记录。理解MySQL使用的排序顺序很重要,<br>特别是对user表。<br><br>当服务器读取user表内容时,它根据在Host和User列中的值排序记录,Host值起决定<br>作用(相同的Host值排在一起,然后再根据User值排序)。然而,排序不是典序(按<br>词排序),它只是部分是。要牢记的是字面上的词优先于模式。这意味着如果你正从<br>client.your.net连接服务器而Host有client.your.net和%.your.net两个值,则第<br>一个先选。类似地,%.your.net优先于%.net,然后是%。IP地址的匹配也是这样的。<br><br>总之一句话,越具体越优先。可以参见本文附录的实例。<br><br>2.3 避免授权表风险<br>本届介绍一些在你授权时的一些预防措施,以及不明值的选择带来的风险。一般地,<br>你要很“吝啬”地授予超级用户权限,即不要启用user表中条目中的权限,而使用其<br>它授权表,以将用户权限限制于数据库、表、或列。在user表中的权限允许于影响到<br>你的服务器操作或能访问任何数据库中的任何表。<br><br>不要授予对mysql数据库的权限。一个拥有包含授权表数据库权限的用户可能会修改表<br>以获取对其他任何数据库的权限。授予允许一个用户修改mysql数据库表的权限也实际<br>上给了用户以一个全局GRANT权限。如果用户能直接修改表,这也等价于能够发出任何<br>你能想象的任何GRANT语句。<br><br>FILE权限尤其危险,不要轻易授权它。以下是一个拥有FILE权限的人能干除的事情:<br><br>    CREATE TABLE etc_passwd (pwd_entry TEXT);<br>    LOAD DATA INFILE "/etc/passwd" into TABLE etc_passwd;<br>    SELECT * FROM etc_passwd;<br><br>在发出这些语句后,用户已经拥有了你的口令文件的内容了。实际上,服务器上任何<br>公开可读文件的内容都可被拥有FILE权限的用户通过网络访问。<br><br>FILE权限也能被利用来危害没有设置足够权限制的文件权限的系统上的数据库。这就<br>是你为什么应该设置数据目录只能由服务器读取的原因。如果对应于数据库表的文件<br>可被任何人读取,不只是用户服务器账号的用户可读,任何有FILE权限的用户也可通<br>过网络连接并读取它们。下面演示这个过程:<br><br>创建一个有一个LONGBLOB列的表: <br>USER test;<br>CREATE TABLE tmp (b LONGBLOB);<br><br>使用该表读取每个对应于你想偷取的数据库表文件的内容,然后将表内容写入你自己<br>数据库的一个文件中:<br><br>LOAD DATA INFILE "./other_db/x.frm" INTO TABLE tmp<br>     FIELDS ESCAPED BY "" LINES TERMINATED BY "";<br>SELECT * FROM tmp INTO OUTFILE "y.frm"<br>     FIELDS ESCAPED BY "" LINES TERMINATED BY "";<br>DELETE FROM tmp;<br>LOAD DATA INFILE "./other_db/x.ISD" INTO TABLE tmp<br>     FIELDS ESCAPED BY "" LINES TERMINATED BY "";<br>SELECT * FROM tmp INTO OUTFILE "y.ISD"<br>     FIELDS ESCAPED BY "" LINES TERMINATED BY "";<br>DELETE FROM tmp;<br>LOAD DATA INFILE "./other_db/x.ISM" INTO TABLE tmp<br>     FIELDS ESCAPED BY "" LINES TERMINATED BY "";<br>SELECT * FROM tmp INTO OUTFILE "y.ISM"<br>现在你拥有了一个新表y,它包含other_db.x的内容并且你有全权访问它。 <br>为避免让人以同样的方式攻击,根据“第一部分 内部安全性-保护你的数据目录”中<br>的指令设置你的数据目录上的权限。你也可以在你启动服务器时使用--skip-show-<br>database选项限制用户对于他们没用访问权限的数据库使用SHOW DATABASES和SHOW <br>TABLES。这有助于防止用户找到关于它们不能访问的数据库和表的信息。<br><br>ALTER权限能以不希望的方式使用。假定你想让user1可以访问table1但不能访问<br>tables2。一个拥有ALTER权限的用户可以通过使用ALTER TABLE将table2改名为<br>table1来偷梁换柱。<br><br>当心GRANT权限。两个由不同权限但都有GRANT权限的用户可以使彼此的权利更强大。<br> <br><br>__________________<br><font color=red>真实源于生活! </font><br>请访问我们的网站: <br>(VB爱好者乐园) <br><a href="http://www.vbgood.com" target=_blank>http://www.vbgood.com</a><br><a href="http://www.d1vb.com" target=_blank>http://www.d1vb.com</a><br><a href="http://61.128.97.225/vbgood/index.asp" target=_blank>http://61.128.97.225/vbgood/index.asp</a><br>拥有1800多个资料! </p></td>
  </tr>
</table>

<p>
<CENTER><a href="http://www.jsp001.com/forum/newreply.php?action=newreply&threadid=421">点这里对该文章发表评论</a></CENTER>
<p>该文章总得分是 <font color=red>0</font> 分,你认为它对你有帮助吗?
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=421&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>0</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=421&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>0</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=421&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>0</font>) 
				[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=421&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>0</font>) </p>
<script language="javascript" src="http://www.jsp001.com/include/read_thread_script.php?threadid=421"></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 + -