没有合适的资源?快使用搜索试试~ 我知道了~
php安全基础[1-8章] 目录: 第一章:简介 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. 加密
资源推荐
资源详情
资源评论
php 安全基础[1-8 章]
目录:
第一章:简介
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. 加密
第一章 简介
1.1.PHP 功能
PHP 有许多适合于 WEB 开发的功能。一些在其它语言中很难实现的普通工作在 PHP
中变得易如反掌,这有好处也有坏处。有一个功能比其它功能来更引人注目,这个功能就
是 register_globals。
1.1.1. 全局变量注册
如果您还能记起早期 WEB 应用开发中使用 C 开发 CGI 程序的话,一定会对繁琐的表
单处理深有体会。当 PHP 的 register_globals 配置选项打开时,复杂的原始表单处理不复
存在,公用变量会自动建立。它让 PHP 编程变得容易和方便,但同时也带来了安全隐患。
事实上,register_globals 是无辜的,它并不会产生漏洞,同时还要开发者犯错才行。
可是,有两个主要原因导致了您必须在开发和布署应用时关闭 register_globals:
第一,它会增加安全漏洞的数量;
第二,隐藏了数据的来源,与开发者需要随时跟踪数据的责任相违背。
本书中所有例子都假定 register_globals 已被关闭,用超级公用数组如$_GET 和
$_POST 取而代之。使用这些数组几乎与 register_globals 开启时的编程方法同样方便,而
其中的些许不便是值得的,因为它提高了程序的安全性。
小提示
如果您必须要开发一个在 register_globals 开启的环境中布署的应用时,很重要的一点
是您必须要初始化所有变量并且把 error_reporting 设为 E_ALL(或 E_ALL | E_STRICT)以
对未初始化变量进行警告。当 register_globals 开启时,任何使用未初始化变量的行为几乎
就意味着安全漏洞。
1.1.2. 错误报告
没有不会犯错的开发者,PHP 的错误报告功能将协助您确认和定位这些错误。可以
PHP 提供的这些详细描述也可能被恶意攻击者看到,这就不妙了。使大众看不到报错信息 ,
这一点很重要。做到这一点很容易,只要关闭 display_errors,当然如果您希望得到出错信
息,可以打开 log_errors 选项,并在 error_log 选项中设置出错日志文件的保存路径。
由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把 error_reporting
设为 E_ALL(E_ALL | E_STRICT 是最高的设置, 提供向下兼容的建议, 如不建议使用的提
示).
所有的出错报告级别可以在任意级别进行修改,所以您如果使用的是共享的主机,没
有权限对 php.ini, httpd.conf, 或 .htaccess 等配置文件进行更改时,您可以在程序中运行出
错报告级别配置语句:
CODE:
<?php
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log', '/usr/local/apache/logs/error_log');
?>
小提示
http://php.net/manual/ini.php 对 php.ini 的选项配置作了详尽的说明。
PHP 还允许您通过 set_error_handler( ) 函数指定您自已的出错处理函数:
CODE:
<?php
set_error_handler('my_error_handler');
?>
上面程序指定了您自已的出错处理函数 my_error_handler( ); 下面是一个实际使用的示
例:
CODE:
<?php
function my_error_handler($number, $string, $file, $line, $context)
{
$error = "=========\nPHP ERROR\n=========\n";
$error .= "Number: [$number]\n";
$error .= "String: [$string]\n";
$error .= "File: [$file]\n";
$error .= "Line: [$line]\n";
$error .= "Context:\n" . print_r($context, TRUE) . "\n\n";
error_log($error, 3, '/usr/local/apache/logs/error_log');
}
?>
小提示
PHP 5 还允许向 set_error_handler( )传递第二个参数以限定在什么出错情况下执行出
定义的出错处理函数。比如,现在建立一个处理告警级别(warning)错误的函数:
CODE:
<?php
set_error_handler('my_warning_handler', E_WARNING);
?>
PHP5 还提供了异常处理机制,详见 http://php.net/exceptions
1.2.原则
你可以列出一大堆开发安全应用的原则,但在本处我选取了我认为对 PHP 开发者最重
要的几个原则。
这些原则有意的写得抽象和理论化。这样做的目的是帮助你从大处着眼,不拘泥于细节 。
剩余63页未读,继续阅读
资源评论
hongfeng8868
- 粉丝: 5
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功