 10 WEB攻击与防护技术 徐震 杨亮 《PHP语⾔程序设计》Error Handling 10 WEB攻击与防护技术 徐震 杨亮 《PHP语⾔程序设计》Error Handling- 典型攻击 n 注入类(以其人之道还治其人之身) q SQL注入 q OS命令注入 q LDAP注入 q 远程文件包含 n 绕过防御类(凌波微步) q 目录遍历 q 不安全对象引用 n 跨站类(隔山打牛) q 跨站脚本 q 跨站请求伪造 n 资源消耗类(吸星大法) q 分布式拒绝服务 认证和会话管理失效 q 隐藏变量篡改 n 配置管理类(家法不严) q 不安全的数据存储 q 信息泄露和不正确的参数处理 应用安全问题根源 防火墙/IPS OS Web服务器 应用服务器 防火墙\IPS 数据库系统 遗留系统 Web 服务 目录服务 人力资源 计费 定制开发的应用代码 用户和 攻击者 网络层防护(防火墙, SSL, IDS, OS加固) 网页,或限定字段长度的输入;并注意黑名单验证方式的局限性:仅仅查找或 替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过 验证机制 32 3.3.远程文件包含 33 概述 n Remote File Inclusion,远程代码包含 q 一些恶意用户利用网站服务器对文件包含过滤不严格而强行 使网站上的代码包含恶意用户自己的文件,以实现执行特定 脚本,达到对网站进行攻击的目的。 0 码力 | 114 页 | 3.65 MB | 1 年前3
 Laravel 5.1 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * 本文档由 Laravel 学院(LaravelAcademy.org)提供 80 * @return void */ public Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 307 页 | 3.46 MB | 1 年前3 Laravel 5.1 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * 本文档由 Laravel 学院(LaravelAcademy.org)提供 80 * @return void */ public Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 307 页 | 3.46 MB | 1 年前3
 Laravel 5.3 中文文档Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 web 应用服务于游戏收集者。如果一个游戏收集者注册了我们的应用并拥有超 过 100 个游戏,我们想要他们解释为什么他们会有这么多游戏,例如,也许他们在运营一个游戏 二手店,又或者他们只是喜欢收集。要添加这种条件,我们可以使用 Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 启动应用服务 * * @return void */ public function boot() { Validator::extend('foo' 信息定义自定义占位符,可以通过创建 自定义验证器然后调用 Validator 门面上的 replacer 方法来实现。可以在服务提供者的 boot 方 法中编写代码: /** * 启动应用服务 * * @return void */ public function boot(){ Validator::extend(...); Validator::replacer('foo'0 码力 | 691 页 | 9.37 MB | 1 年前3 Laravel 5.3 中文文档Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 web 应用服务于游戏收集者。如果一个游戏收集者注册了我们的应用并拥有超 过 100 个游戏,我们想要他们解释为什么他们会有这么多游戏,例如,也许他们在运营一个游戏 二手店,又或者他们只是喜欢收集。要添加这种条件,我们可以使用 Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 启动应用服务 * * @return void */ public function boot() { Validator::extend('foo' 信息定义自定义占位符,可以通过创建 自定义验证器然后调用 Validator 门面上的 replacer 方法来实现。可以在服务提供者的 boot 方 法中编写代码: /** * 启动应用服务 * * @return void */ public function boot(){ Validator::extend(...); Validator::replacer('foo'0 码力 | 691 页 | 9.37 MB | 1 年前3
 Laravel 5.6 中文文档入(DI)深入理解服务容器和服务提供者的实现原理。 门面(Facades) 简介 注:对门面这个概念不理解?可参考 PHP 设计模式系列 —— 门面模式(Facade)。 门面为应用服务容器中的绑定类提供了一个“静态”接口。Laravel 内置了很多门面,你可能在不知道的情况下正在使用它们。Laravel 的门面作为服务 容器中底层类的“静态代理”,相比于传统静态方法,在维护时能 App\Providers; use View; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key' Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 Web 应用服务于游戏收藏者。如果一个游戏收藏者注册了我们的应用并拥有超过 100 个游戏,我们想要他们解释为什么他们会 有这么多游戏,例如,也许他们在运营一个游戏二手店,又或者他们只是喜欢收藏。要添加这种条件,我们可以使用0 码力 | 377 页 | 14.56 MB | 1 年前3 Laravel 5.6 中文文档入(DI)深入理解服务容器和服务提供者的实现原理。 门面(Facades) 简介 注:对门面这个概念不理解?可参考 PHP 设计模式系列 —— 门面模式(Facade)。 门面为应用服务容器中的绑定类提供了一个“静态”接口。Laravel 内置了很多门面,你可能在不知道的情况下正在使用它们。Laravel 的门面作为服务 容器中底层类的“静态代理”,相比于传统静态方法,在维护时能 App\Providers; use View; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key' Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 Web 应用服务于游戏收藏者。如果一个游戏收藏者注册了我们的应用并拥有超过 100 个游戏,我们想要他们解释为什么他们会 有这么多游戏,例如,也许他们在运营一个游戏二手店,又或者他们只是喜欢收藏。要添加这种条件,我们可以使用0 码力 | 377 页 | 14.56 MB | 1 年前3
 Laravel 5.2 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { DB::listen(function($sql Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 377 页 | 4.56 MB | 1 年前3 Laravel 5.2 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { DB::listen(function($sql Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 377 页 | 4.56 MB | 1 年前3
 Laravel 6.0 中文文档框架底层工作原理,可以 阅读 Laravel 从学徒到工匠系列教程。 门面(Facades) 简介 注:对门面这个概念不理解?可参考 PHP 设计模式系列 —— 门面模式(Facade)。 门面为应用服务容器中的绑定类提供了一个「静态」接口。Laravel 内 置了很多门面,你可能在不知道的情况下正在使用它们。Laravel 的 门面作为服务容器中底层类的「静态代理」,相比于传统静态方法, extends ServiceProvider { 本文档由学院君提供 学院君致力于提供优质 Laravel 中文学习资源:https://xueyuanjun.com 288 /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key', 'value'); } /** * 注册服务提供者 Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 Web 应用服务于游戏收藏者。如果一个游戏收藏 者注册了我们的应用并拥有超过 100 个游戏,我们想要他们解释为 什么他们会有这么多游戏,例如,也许他们在运营一个游戏二手店, 又或者他们只是喜欢收藏。要添加这种条件,我们可以使0 码力 | 1442 页 | 14.66 MB | 1 年前3 Laravel 6.0 中文文档框架底层工作原理,可以 阅读 Laravel 从学徒到工匠系列教程。 门面(Facades) 简介 注:对门面这个概念不理解?可参考 PHP 设计模式系列 —— 门面模式(Facade)。 门面为应用服务容器中的绑定类提供了一个「静态」接口。Laravel 内 置了很多门面,你可能在不知道的情况下正在使用它们。Laravel 的 门面作为服务容器中底层类的「静态代理」,相比于传统静态方法, extends ServiceProvider { 本文档由学院君提供 学院君致力于提供优质 Laravel 中文学习资源:https://xueyuanjun.com 288 /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key', 'value'); } /** * 注册服务提供者 Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 Web 应用服务于游戏收藏者。如果一个游戏收藏 者注册了我们的应用并拥有超过 100 个游戏,我们想要他们解释为 什么他们会有这么多游戏,例如,也许他们在运营一个游戏二手店, 又或者他们只是喜欢收藏。要添加这种条件,我们可以使0 码力 | 1442 页 | 14.66 MB | 1 年前3
 CmlPHP v2.x 开发手册
有的静态资源都存放在这个目录下如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件 章节 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别 当前运行的环境是0 码力 | 245 页 | 720.67 KB | 1 年前3 CmlPHP v2.x 开发手册
有的静态资源都存放在这个目录下如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件 章节 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别 当前运行的环境是0 码力 | 245 页 | 720.67 KB | 1 年前3
 CmlPHP v2.x 开发手册
应用下所有的静态资源都存放在这个目录下 如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件章节 13 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别当前运行的环境是 开发/cli(计划0 码力 | 143 页 | 1.54 MB | 1 年前3 CmlPHP v2.x 开发手册
应用下所有的静态资源都存放在这个目录下 如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件章节 13 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别当前运行的环境是 开发/cli(计划0 码力 | 143 页 | 1.54 MB | 1 年前3
 CmlPHP v2.x 开发手册
应用下所有的静态资源 都存放在这个目录下如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件章节 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别当前运行的环境是 开发0 码力 | 251 页 | 973.37 KB | 1 年前3 CmlPHP v2.x 开发手册
应用下所有的静态资源 都存放在这个目录下如:js、css、sass等 web/Plugin 可选 为web应用插件存放目录 具体请参考 插件章节 web/Service 可选 为web应用服务存放目录 web/View 可选 这web应用存放模板文件目录 proxxx/Config目录 Config 目录即为项目全局配置文件存放目录,框架会自动识别当前运行的环境是 开发0 码力 | 251 页 | 973.37 KB | 1 年前3
共 9 条
- 1














