PHP常见漏洞及解决方法.ppt_第1页
PHP常见漏洞及解决方法.ppt_第2页
PHP常见漏洞及解决方法.ppt_第3页
PHP常见漏洞及解决方法.ppt_第4页
PHP常见漏洞及解决方法.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

PHP常见漏洞及解决方法,滥用include(1),漏洞原因有很多PHP脚本直接把某输入变量作为Include的参数,造成任意引用脚本、绝对路径泄露等漏洞。范例.$includepage=$_GETincludepage;include($includepage);.,滥用include(1),漏洞解决先判断页面是否存在再进行Include。范例$pagelist=array(test1.php,test2.php,test3.php);if(isset($_GETincludepage)$includepage=$_GETincludepage;foreach($pagelistas$prepage)if($includepage=$prepage)include($prepage);$checkfind=true;break;if($checkfind=true)unset($checkfind);elsedie();,未对输入变量进行过滤(1),漏洞原因存在SQL注入漏洞、档案储存问题范例$id=$_GETid;$query=SELECT*FROMmy_tablewhereid=.$id.;$result=mysql_query($query);-$text1=$_POSTtext1;$text2=$_POSTtext2;$text3=$_POSTtext3;$fd=fopen(test.php,a);fwrite($fd,rn$text1,未对输入变量进行过滤(1),漏洞解决严格对全部提交的变量进行过滤。范例functionflt_tags($text)$badwords=array(,);$badwords=array(,);$text=rtrim($text);foreach($badwordsas$badword)foreach($badwordsas$badword)if(stristr($text,$badword)=true)die();,$text=htmlspecialchars($text);/HTML替换$text=str_replace(r,$text);$text=str_replace(n,$text);$text=str_replace(,$text1=$_POSTtext1;$text2=$_POSTtext2;$text3=$_POSTtext3;$text1=flt_tags($text1);$text2=flt_tags($text2);$text3=flt_tags($text3);$fd=fopen(test.php,a);fwrite($fd,rn$text1,管理员判断不完全(1),漏洞原因我们用PHP写脚本,通常要涉及管理员的权限问题。而一些脚本对管理员权限作出“是”判断,而往往忽略了“否”判断。范例$cookiesign=admincookiesign;$adminsign=$_COOKIEsign;If($adminsign=$cookiesign)$admin=true;if($admin)echo;,管理员判断不完全(1),漏洞解决在脚本中加入对管理员的“否”判断即可。范例$cookiesign=admincookiesign;$adminsign=$_COOKIEsign;if($adminsign=$cookiesign)define(admin,true);elsedefine(admin,false);if(admin)echo;,错误路径泄露(1),漏洞原因PHP遇到错误时,就会给出出错脚本的位置、行数和原因,例如:Notice:Useofundefinedconstanttest-assumedtestinD:interpubbigflytest.phponline3Notice:Useofundefinedconstanttest-assumedtestinD:interpubbigflytest.phponline3,错误路径泄露(2),漏洞解决display_errors设置为Off、利用set_error_handler()来解决范例/自定义的错误处理函数一定要有这个输入变量$errno,$errstr,$errfile,$errline,否则无效。,functionmy_error_handler($errno,$errstr,$errfile,$errline)if(!admin)$errfile=str_replace(getcwd(),$errfile);$errstr=str_replace(getcwd(),$errstr);switch($errno)caseE_ERROR:caseE_ERROR:echoERROR:ID$errno$errstr(Line:$errlineof$errfile)echoERROR:ID$errno$errstr(Line:$errlineof$errfile)n;echo;exit;break;caseE_WARNING:caseE_WARNING:echoWARNING:ID$errno$errstr(Line:$errlineof$errfile)echoWARNING:ID$errno$errstr(Line:$errlineof$errfile)n;break;default:break;/把错误处理设置为my_error_handler函数set_error_handler(my_error_handler);,POST漏洞(1),漏洞原因在一些留言本和论坛程序中,更要严格检查页面的方式和提交的时间间隔。以防止灌水式发帖和外部提交。范例.$text1=flt_tags($text1);$text2=flt_tags($text2);$text3=flt_tags($text3);$fd=fopen(data.php,a);fwrite($fd,rn$text1.,POST漏洞(2),漏洞解决$_SESSION“allowgbookpost”=time();/登记填写时的时间在接受留言数据并保存的页面中我们在进行数据处理前我们也用Session进行以下处理:if(strtoupper($_SERVER“REQUEST_METHOD”)!=”POST”)die(“错误:请勿在外部提交。”);/检查页面获得方法是否为POSTif(!isset($_SESSION“allowgbookpost”)or(time()-$_SESSION“allowgbookpost”10)die(“错误:请勿在外部提交。”);/检查留言填写时的时间if(isset($_SESSIONgbookposttime)and(time()-$_SESSIONgbookposttime120)die(错误:两次提交留言的

温馨提示

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

评论

0/150

提交评论