PHP安全及性能优化课件_第1页
PHP安全及性能优化课件_第2页
PHP安全及性能优化课件_第3页
PHP安全及性能优化课件_第4页
PHP安全及性能优化课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本周内容PHP安全PHP性能优化本周内容PHP安全1PHP安全输入验证跨站点脚本阻止SQL注入代码注入命令注入Session安全文件访问安全沙盒PHP安全输入验证2输入验证输入验证正则表达式Sanitizing和Logical过滤器清理输入字符串输入验证输入验证3跨站点脚本攻击阻止拒绝特殊字符利用HTTP-onlyCookie解决XSS使用filter_xss()阻止跨站点脚本攻击跨站点脚本攻击阻止拒绝特殊字符4SQL注入引号使用预编译语句Like使用SQL错误处理其它风险SQL注入引号使用5代码注入路径校验使用全路径避免动态路径验证文件名其它代码注入风险代码注入路径校验6命令注入通过命令注入使资源衰竭路径使用隐含威胁命令注入通过命令注入使资源衰竭7Session安全服务器端的弱点URLSessionSession鼓动本地保护机制服务器端过期机制加密Session超出基于IP的验证Session安全服务器端的弱点8文件访问安全加密读权限加密写权限上载文件现值文件前面安全模式PHP编码根目录管理文件访问安全加密读权限9沙盒使用沙盒误导攻击编译沙盒IP地址限制路由信息沙盒使用沙盒误导攻击10PHP性能优化PHP代码人工优化使用优化工具优化代码页面文件压缩输出Mysql缓存优化配置数据库优化PHP性能优化PHP代码人工优化11PHP代码人工优化(一)方法可静态化,速率可提升至4倍使用echo而不是print使用echo的多重参数,而不是字符串连接。便利数组时foreach比while大约快20%-30%左右。注销那些不用的变量尤其是大数组,以便释放内存。尽量避免使用__get,__set,__autoload。在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。函数代替正则表达式完成相同功能PHP代码人工优化(一)方法可静态化,速率可提升至4倍12PHP代码人工优化(二)使用选择分支语句(译注:即switchcase)好于使用多个if,elseif语句。用@屏蔽错误消息的做法非常低效。打开apache的mod_deflate模块。数据库连接当使用完毕时应关掉。$row[‘id’]的效率是$row[id]的7倍。错误消息代价昂贵。尽量不要在for循环中使用函数,比如for($x=0;$x<count($array);$x)每循环一次都会调用count()函数。PHP代码人工优化(二)使用选择分支语句(译注:即swit13PHP代码人工优化(三)在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。递增一个全局变量要比递增一个局部变量慢2倍。递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。PHP代码人工优化(三)14PHP代码人工优化(四)方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。派生类中的方法运行起来要快于在基类中定义的同样的方法。调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。PHP代码人工优化(四)15PHP代码人工优化(五)Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码(OPcode)的缓存很有用,使得脚本不必为每个请求做重新编译。并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。并非要用类实现所有的数据结构,数组也很有用。PHP代码人工优化(五)16PHP代码人工优化(六)不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?尽量采用大量的PHP内置函数。如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。我想要完成的任何事情PHP代码人工优化(六)17使用优化工具优化代码zendoptimizer工具的使用使用优化工具优化代码zendoptimizer工具的使用18页面文件压缩输出Html页面、JavaScript、CSS文件压缩输出使用Apache2的mod_deflate模块页面文件压缩输出Html页面、JavaScript、CSS文19MySql缓存优化配置使用动态缓存使用静态缓存使用缓存工具eAccelerator、APC、Zendplatformforperformancesuite等Php函数库预先读到缓存中MySql缓存优化配置使用动态缓存20数据库优化索引ISAM类型的表改为MyISAM合理使用范式用固定的表格式创建表存储过程的使用数据库优化索引21结束语谢谢!结束语谢谢!22本周内容PHP安全PHP性能优化本周内容PHP安全23PHP安全输入验证跨站点脚本阻止SQL注入代码注入命令注入Session安全文件访问安全沙盒PHP安全输入验证24输入验证输入验证正则表达式Sanitizing和Logical过滤器清理输入字符串输入验证输入验证25跨站点脚本攻击阻止拒绝特殊字符利用HTTP-onlyCookie解决XSS使用filter_xss()阻止跨站点脚本攻击跨站点脚本攻击阻止拒绝特殊字符26SQL注入引号使用预编译语句Like使用SQL错误处理其它风险SQL注入引号使用27代码注入路径校验使用全路径避免动态路径验证文件名其它代码注入风险代码注入路径校验28命令注入通过命令注入使资源衰竭路径使用隐含威胁命令注入通过命令注入使资源衰竭29Session安全服务器端的弱点URLSessionSession鼓动本地保护机制服务器端过期机制加密Session超出基于IP的验证Session安全服务器端的弱点30文件访问安全加密读权限加密写权限上载文件现值文件前面安全模式PHP编码根目录管理文件访问安全加密读权限31沙盒使用沙盒误导攻击编译沙盒IP地址限制路由信息沙盒使用沙盒误导攻击32PHP性能优化PHP代码人工优化使用优化工具优化代码页面文件压缩输出Mysql缓存优化配置数据库优化PHP性能优化PHP代码人工优化33PHP代码人工优化(一)方法可静态化,速率可提升至4倍使用echo而不是print使用echo的多重参数,而不是字符串连接。便利数组时foreach比while大约快20%-30%左右。注销那些不用的变量尤其是大数组,以便释放内存。尽量避免使用__get,__set,__autoload。在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。函数代替正则表达式完成相同功能PHP代码人工优化(一)方法可静态化,速率可提升至4倍34PHP代码人工优化(二)使用选择分支语句(译注:即switchcase)好于使用多个if,elseif语句。用@屏蔽错误消息的做法非常低效。打开apache的mod_deflate模块。数据库连接当使用完毕时应关掉。$row[‘id’]的效率是$row[id]的7倍。错误消息代价昂贵。尽量不要在for循环中使用函数,比如for($x=0;$x<count($array);$x)每循环一次都会调用count()函数。PHP代码人工优化(二)使用选择分支语句(译注:即swit35PHP代码人工优化(三)在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。递增一个全局变量要比递增一个局部变量慢2倍。递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。PHP代码人工优化(三)36PHP代码人工优化(四)方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。派生类中的方法运行起来要快于在基类中定义的同样的方法。调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。PHP代码人工优化(四)37PHP代码人工优化(五)Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码(OPcode)的缓存很有用,使得脚本不必为每个请求做重新编译。并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。并非要用类实现所有的数据结构,数组也很有用。PHP代码人工优化(五)38PHP代码人工优化(六)不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?尽量采用大量的PHP内置函数。如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。我想要完成的任何事情PHP代码人工优化(六)39使用优化工具优化代码zendoptimizer工具的使用使用优化工具优化代码zendoptimizer工具的使用40页面文件压缩输出Html页面、JavaSc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论