php 资料审核,PHP代码审核的详细介绍

本篇文章是对PHP代码审核进行了详细的分析介绍,需要的朋友参考下

概述

代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险

代码审核不是简单的检查代码,审核代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的。

审核人员可以使用类似下面的问题对开发者进行访谈,来收集应用程序信息。

应用程序中包含什么类型的敏感信息,应用程序怎么保护这些信息的?

应用程序是对内提供服务,还是对外?哪些人会使用,他们都是可信用户么?

应用程序部署在哪里?

应用程序对于企业的重要性?

最好的方式是做一个 checklist,让开发人员填写。Checklist 能比较直观的反映应用程序的信息和开发人员所做的编码安全,它应该涵盖可能存在严重漏洞的模块,例如:数据验证、身份认证、会话管理、授权、加密、错误处理、日志、安全配置、网络架构。

输入验证和输出显示

大多数漏洞的形成原因主要都是未对输入数据进行安全验证或对输出数据未经过安全处理,比较严格的数据验证方式为:对数据进行精确匹配

接受白名单的数据

拒绝黑名单的数据

对匹配黑名单的数据进行编码

在 PHP 中可由用户输入的变量列表如下:

$_SERVER

$_GET

$_POST

$_COOKIE

$_REQUEST

$_FILES

$_ENV

$_HTTP_COOKIE_VARS

$_HTTP_ENV_VARS

$_HTTP_GET_VARS

$_HTTP_POST_FILES

$_HTTP_POST_VARS

$_HTTP_SERVER_VARS

我们应该对这些输入变量进行检查

命令注入

安全威胁

命令注入攻击是通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容,而这样就可能会导致恶意命令掌控用户的电脑和他们的网络。PHP执行系统命令可以使用以下几个函数:system、exec、passthru、``、shell_exec、popen、proc_open、pcntl_exec,我们通过在全部程序文件中搜索这些函数,确定函数的参数是否会因为外部提交而改变,检查这些参数是否有经过安全处理。

代码示例

例1:

复制代码 代码如下:

//ex1.php";

system("ls -al".$dir);

echo "";

}

?>

我们提交

复制代码 代码如下:

localhost/ex1.php?dir=| cat /etc/passwd

提交以后,命令变成了

复制代码 代码如下:

system("ls -al | cat /etc/passwd");

b60a9adf2eaa455a14058d8ddeba7d29.png

防范方法

1、尽量不要执行外部命令

2、使用自定义函数或函数库来替代外部命令的功能

3、使用escapeshellarg函数来处理命令参数

4、使用safe_mode_exec_dir指定可执行文件的路径

esacpeshellarg函数会将任何引起参数或命令结束的字符转义,单引号“'”,替换成“\'”,双引号“"”,替换成“\"”,分号“;”替换成“\;”, 用safe_mode_exec_dir指定可执行文件的路径,可以把会使用的命令提前放入此路径内。

复制代码 代码如下:

safe_mode = On

safe_mode_exec_di r= /usr/local/php/bin/

跨站脚本威胁(Cross Site Scripting)

安全威胁

Cross Site Script(XSS),跨站脚本威胁。攻击者利用应用程序的动态展示数据功能,在 html 页面里嵌入恶意代码。当用户浏览该页之时,这些嵌入在 html 中的恶意代码会被

执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的。输出函数经常使用:echo、print、printf、vprintf、

跨站脚本攻击有以下三种攻击形式:

(1) 反射型跨站脚本攻击

攻击者会通过社会工程学手段,发送一个 URL 连接给用户打开,在用户打开页面的同时,浏览器会执行页面中嵌入的恶意脚本。

(2) 存储型跨站脚本攻击

攻击者利用 web 应用程序提供的录入或修改数据功能,将数据存储到服务器或用户cookie 中,当其他用户浏览展示该数据的页面时,浏览器会执行页面中嵌入的恶意脚本。所有浏览者都会受到攻击。

(3) DOM 跨站攻击

由于 html 页面中,定义了一段 JS,根据用户的输入,显示一段 html 代码,攻击者可以在输入时,插入一段恶意脚本,最终展示时,会执行恶意脚本。DOM 跨站和以上两个跨站攻击的差别是,DOM 跨站是纯页面脚本的输出,只有规范使用 JAVASCRIPT,才可以防御。

恶意攻击者可以利用跨站脚本攻击做到:

(1) 盗取用户 cookie,伪造用户身份登录。

(2) 让浏览者被迫执行某页面操作,以用户身份向服务器发起请求,达到攻击目的。

(3) 结合浏览器漏洞,下载病毒木马到浏览者的计算机上执行。

(4) 衍生 URL 跳转漏洞。

(5) 让官方网站出现钓鱼页面。

(6) 蠕虫攻击

代码示例

直接在 html 页面展示“用户可控数据”,将直接导致跨站脚本威胁。

复制代码 代码如下:

echo “$newsname”;

echo “$gifname”;

echo “”;

echo “”. htmlentities($context).””;

?>

这几种显示方式,都可能导致用户浏览器把“用户可控数据”当成 JS/VBS 脚本执行,或页面元素被“用户可控数据”插入的页面 HTML 代码控制,从而造成攻击。

解决方案

a) 在 HTML 中显示“用户可控数据”前,应该进行 htmlescape 转义。

复制代码 代码如下:

htmlspecialchars($outputString,ENT_QUOTES);

进行 html 转义应该按照以下列表进行转义:

复制代码 代码如下:

& --> &

< --> <

> --> >

" --> "

' --> '

b) 在 javascript 中输出的“用户可控数据”,需要做 javascript escape 转义。

需要转义的字符包括:

复制代码 代码如下:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

经过一些时间的努力,随缘网络PHP留言板V1.0(带审核功能)总算正式发布了,该留言系统采用PHP MYSQL编写,界面色调风格延续之前asp版留言系统简洁浅蓝色风格,稍有所变动。希望大家能够喜欢。初发布,系统中难免有些小问题,希望大家在使用中有什么问题可到本站留言提出,我们将总结各问题后给予修正并升级。 以下为系统的功能简介: 1、采用div css布局经测试兼容IE及firefox主流浏览器,其他浏览器暂未测试。 2、后台可设置开启或关闭留言审核功能。 3、后台可设置诸如管理员帐号密码,留言板公告,网站标题,网站底部版权等信息。 4、采用最新版xhEditor编辑器,xhEditor是一个基于jQuery开发的跨平台开源迷你XHTML编辑器组件。 5、可批量删除,审核留言,留言IP归属地查询等。 安装说明: 1、下载本系统后,解压压缩包后,用记事本等工具打开conn.php文件,根据自已空间数据库情况配置数据库相关参数。 2、将程序按之前配置参数情况上传到指定二级目录或根目录,运行install.php页面,至此安装完成,根据提示返回系统首页,或登陆后台配置相关设置。 3、后台管理文件夹为manage 初使帐号密码:admin  admin888 最新更新内容: 1、对留言提交数据进行了过滤函数的更新。 2、安装系统智能判断安装与锁定,初次上传系统运行,系统会自动默认转到install.php安装页面,按相关提示即可完成安装! 3、更正因mysql数据库默认编码为非gbk,造成留言板数据乱码问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值