文档章节

关于PHP的漏洞以及如何防止PHP漏洞?

mckee
 mckee
发布于 2013/07/01 23:21
字数 967
阅读 179
收藏 21

漏洞无非这么几类,XSS、sql注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露、cookie伪造、CSRF(跨站请求)等。这些漏洞不仅仅是针对PHP语言的,本文只是简单介绍PHP如何有效防止这些漏洞。

1.xss + sql注入(关于xss攻击详细介绍

其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤。用PHP写个过滤函数,可由如下所示:

$_REQUEST = filter_xss($_REQUEST);

$_GET = filter_xss($_GET);

$_POST = filter_xss($_POST);

$_COOKIE = filter_xss($_COOKIE);

$_POST = filter_sql($_POST);

$_GET = filter_sql($_GET);

$_COOKIE = filter_sql($_COOKIE);

$_REQUEST = filter_sql($_REQUEST);

最简单的filter_xss函数是htmlspecialchars()

最简单的filter_sql函数是mysql_real_escape_string()

当然,谁都知道这种过滤filter_sql(详细防止sql注入)只能过滤字符型和搜索型的注入,对于数字型是没有办法的,但也说明做了这层过滤后,只需在后面注意数字型的SQL语句就可以了,遇到了加intval过滤就可以了,这就变得容易多了。

2. 命令执行

对于命令执行,可以从关键字入手,总共可分为3类

(1) php代码执行 :eval等

(2)shell命令执行:exec、passthru、system、shell_exec等

(3) 文件处理:fwrite、fopen、mkdir等

对于这几类需要注意其参数是否用户可控。

3.上传漏洞

对于上传漏洞,也是重点关注的地方,要仔细分析它的处理流程,针对上传的绕过方式是很多的,最保险的方式:在保存文件是采用文件名随机命名和后缀白名单方式。其次要注意的一点是上传文件的地方可能不止一处,不要有遗漏,可能会碰到这样的情况,突然在某个目录里面包含了一个第三方的编辑器在里面。

文件包含漏洞涉及的函数如include() 、include_once()、require()、require_once()、file_get_contents()等

最常见的还是出在下载文件功能函数,例如download.php?file=../../../etc/passwd 这种类型中。

4. 权限绕过

权限绕过可分为两类吧

(1)后台文件的未授权访问。后台的文件没有包含对session的验证,就容易出现这样的问题

(2)未作用户隔离,例如mail.php?id=23显示了你的信件,那么换个ID, mail.php?id=24就查看到了别人的信件,编写代码是方便,把信件都存在一个数据表里,id统一编号,前端展现时只需按id取出即可,但未作用户隔离,判定归属,容易造成越权访问。

这样的例子是很常见的,给某银行做评估是就经常发现这种漏洞。

5. 信息泄露

信息泄露算是比较低危的漏洞了,比如列目录这种就属于部署问题,而与代码审计无关了,而像暴路径、暴源码这种是需要防止的。曾经遇到这样的代码

<?php if(empty($_GET['a'])) {…} ?>

表面上似乎没问题,可是当请求变为 xx.php?a[]=1时,即参数变为数组的时候,就会发生错误以致路径泄露,而用isset判断则不会,当然一个个防太麻烦,建议在配置文件中关闭错误提示,或者在公共文件中加入如下代码以关闭错误显示功能:

<?php error_reporting(0);?>

之前PHP点点通(phpddt.com)就有一篇文章:关于PHP防止漏洞策略 ,介绍了register_globals 的危害以及魔术引用Magic Quotes使用说明。

注明:本文部分内容摘自PHPCHINA

欢迎转载! 原文地址:  http://www.phpddt.com/php/prevent-php-bugs.html ,转载请注明地址,谢谢!

© 著作权归作者所有

mckee
粉丝 1
博文 8
码字总数 5157
作品 0
闵行
程序员
私信 提问
加载中

评论(1)

子弹兄
子弹兄
嗯 太好了
phpstudy 漏洞分析与利用POC 包含漏洞补丁

phpStudy于近日被暴露出有后门漏洞,之前的phpStudy2016,phpStudy2018部分版本,EXE程序包疑似被入侵者植入木马后门,导致许多网站及服务器被攻击,被篡改,目前我们SINE安全公司立即成立p...

网站安全
09/27
0
0
怎么看网站是否被黑防止网站被黑

网站被黑,打开网站竟然跳转到博cai网站上去了,一开始以为自己看错了,多次从百度点击自己网站进去,还是会跳转到彩piao网站上,第一反应是自己的网站被黑了,经营网站很多年了,从来未遇到...

网站安全
2018/11/02
38
0
修复网站漏洞对phpmyadmin防止被入侵提权的解决办法

phpmyadmin是很多网站用来管理数据库的一个系统,尤其是mysql数据库管理的较多一些,最近phpmysql爆出漏洞,尤其是弱口令,sql注入漏洞,都会导致mysql的数据账号密码被泄露,那么如何通过p...

网站安全
2018/11/20
22
0
网站漏洞修复公司 网站修复与安全加固

Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本...

网站安全
07/12
41
0
THINKPHP网站漏洞修复对于远程写入网站木马文件漏洞详情与修补

THINKPHP漏洞修复,官方于近日,对现有的thinkphp5.0到5.1所有版本进行了升级,以及补丁更新,这次更新主要是进行了一些漏洞修复,最严重的就是之前存在的SQL注入漏洞,以及远程代码执行查询系...

网站安全
2018/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部