<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>
- 第一章 简介
- 1.1.PHP功能
- 1.1.1. 全局变量注册
- 1.1.2. 错误报告
- 1.2.原则
- 1.2.1. 深度防范
- 1.2.2. 最小权限
- 1.2.3. 简单就是美
- 1.2.4. 暴露最小化
- 1.3. 方法
- 1.3.1. 平衡风险与可用性
- 1.3.2. 跟踪数据
- 1.3.3. 过滤输入
- 1.3.4. 输出转义
- 第二章 表单及URL
- 2.1. 表单与数据
- 2.2. 语义URL攻击
- 2.3. 文件上传攻击
- 2.4. 跨站脚本攻击
- 2.5. 跨站请求伪造
- 2.6. 欺骗表单提交
- 2.7. HTTP请求欺骗
- 第三章 数据库及SQL
- 3.1. 访问权限暴露
- 3.2. SQL 注入
- 3.3. 数据的暴露
- 第四章 会话与 Cookies
- 4.1. Cookie 盗窃
- 4.2. 会话数据暴露
- 4.3. 会话固定
- 4.4. 会话劫持
- 第五章 包含
- 5.1. 源码暴露
- 5.2. 后门URL
- 5.3. 文件名操纵
- 5.4. 代码注入
- 第六章 文件与命令
- 6.1. 文件系统跨越
- 6.2. 远程文件风险
- 6.3. 命令注入
- 第七章 验证与授权
- 7.1. 暴力攻击
- 7.2. 密码嗅探
- 7.3. 重播攻击
- 7.4. 永久登录
- 第八章 共享主机
- 8.1. 源码暴露
- 8.2. 会话数据暴露
- 8.3. 会话注入
- 8.4. 文件系统浏览
- 8.5. 安全模式
- 附录 A. 配置选项
- 附录B. 函数
- 附录C. 加密