<table width="100%" border="0" cellspacing="0" cellpadding="5" bgcolor="#649CCC"><tr valign="middle"><td align="left"> <p class="p_Heading1"><span class="f_Heading1">第三章 数据库及SQL</span></p> </td> <td align="right"> <span style="font-size: 9pt"> <a href="introduction.htm">Top</a>  <a href="new_item23.htm">Previous</a>  <a href="new_item25.htm">Next</a> </span> </td> </tr></table> <table width="100%" border="0" cellspacing="0" cellpadding="5"><tr valign="top"><td align="left"><p style="line-height: 1.50;">                                                                   第三章 数据库及SQL</p><p style="line-height: 1.50;">   PHP的作用常常是沟通各种数据源及用户的桥梁。事实上,有些人认为PHP更像是一个平台而不是一个编程语言。基于这些原因,PHP频繁用于与数据库的交流。</p><p style="line-height: 1.50;">   PHP可以很好的胜任这个任务,其原因特别是由于它能与很多种数据库连接。下面列举了PHP支持的小部分数据库:</p><p style="line-height: 1.50;">DB2</p><p style="line-height: 1.50;">ODBC</p><p style="line-height: 1.50;">SQLite</p><p style="line-height: 1.50;">InterBase</p><p style="line-height: 1.50;">Oracle</p><p style="line-height: 1.50;">Sybase</p><p style="line-height: 1.50;">MySQL</p><p style="line-height: 1.50;">PostgreSQL</p><p style="line-height: 1.50;">DBM</p><p style="line-height: 1.50;"> </p><p style="line-height: 1.50;">   与任何的远程数据存储方式相同,数据库本身也存在着一些风险。尽管数据库安全不是本书讨论的问题,但数据库安全是需要时刻注意的,特别是关于如何对待从数据库读取作为输入的数据的问题。</p><p style="line-height: 1.50;">   正如第一章所讨论的,所有输入必需要进行过滤,同时所有的输出必须要转义。当处理数据库时,意味着所有来自数据库的数据要过滤,所有写入数据库的数据要进行转义。</p><p style="line-height: 1.50;"> </p><p style="line-height: 1.50;"><span style="font-weight: bold;">小提示</span></p><p style="line-height: 1.50;">   常犯的错误是忘记了SELECT语句本身是向数据库传送的数据。尽管该语句的目的是取得数据,但语句本身则是输出。</p><p style="line-height: 1.50;"> </p><p style="line-height: 1.50;">   很多PHP开发人员不会去过滤来自数据库的数据,他们认为数据库内保存的是已过滤的数据。虽然这种做法的安全风险是很小的,但是这不是最好的做法,同时我也不推荐这样做。这种做法是基于对数据库安全的绝对信任,但同时违反了深度防范的原则。如果恶意数据由于某些原因被注入了数据库,如果你有过滤机制的话,就能发现并抓住它。请记住,冗余的安全措施是有价值的,这就是一个很好的例子。</p><p style="line-height: 1.50;">   本章包括了其它几个需要关心的主题,包括访问权限暴露及SQL注入。SQL注入是需要特别关注的,这是因为在流行的PHP应用中频繁发现了SQL注入漏洞。</p><p style="line-height: 1.50;"> </p><hr noshade="noshade" size="1"/><p style="line-height: 1.50;"> </p></td></tr></table>